方法一:配置文件修改
修改配置文件配置application.yml:
spring:
# 配置日期格式化
jackson:
date-format: yyyy-mm-dd hh:mm:ss #时间戳统一转换为指定格式
time-zone: gmt+8 # 时区修改为东8区application.properties配置方式
spring.jackson.date-format=yyyy-mm-dd hh:mm:ss #时间戳统一转换为指定格式 spring.jackson.time-zone=gmt+8 # 时区修改为东8区
【注意】这里需要修改时区time-zone:数据库默认时区是格林尼治的时间,如果不设置,会比实际时间少8个小时(北京时间)。
方法二:在javabean实体类上加注解
@jsonformat注解
@jsonformat注解用于属性或方法上,将date类型转换为我们需要的类型显示。
//在pattern上设置自己需要的格式 @jsonformat(pattern="yyyy-mm-dd hh:mm:ss") private date createtime;
@datetimeformat注解
在需要进行日期格式转换的date属性上添加注解@datetimeformat(pattern = "需要转换的格式")
//注解将yyyy-mm-dd的形式转换为date数据 @datetimeformat(pattern = "yyyy-mm-dd hh:mm:ss") private date birthday;
@temporal注解
通过@temporal注解,实现日期格式转换,它自带属性参数,比如:
@entity
public class myentity {
@id
private long id;
// 得到yyyy-mm-dd日期格式
@temporal(temporaltype.date)
private date mydate;
// 得到hh:mm:ss时间格式
@temporal(temporaltype.time)
private date mytime;
// 得到yyyy-mm-dd hh:mm:ss时间格式
@temporal(temporaltype.timestamp)
private date mytimestamp;
// other fields and methods
}方法三:springboot配置全局日期格式转换器
package com.mooding.common.share.config;
import java.io.ioexception;
import java.text.simpledateformat;
import java.time.localdate;
import java.time.localdatetime;
import java.time.localtime;
import java.util.date;
import org.springframework.boot.autoconfigure.condition.conditionalonproperty;
import org.springframework.boot.jackson.jsoncomponent;
import com.fasterxml.jackson.core.jsongenerator;
import com.fasterxml.jackson.core.jsonparser;
import com.fasterxml.jackson.core.jsonprocessingexception;
import com.fasterxml.jackson.databind.deserializationcontext;
import com.fasterxml.jackson.databind.jsondeserializer;
import com.fasterxml.jackson.databind.jsonserializer;
import com.fasterxml.jackson.databind.serializerprovider;
import com.mooding.common.tools.utils.dateutils;
import lombok.sneakythrows;
/**
* 类usercombinedserializer的实现描述
*
*/
@jsoncomponent
@conditionalonproperty(prefix = dateformatconfig.prefix, name = "enabled", havingvalue = "true", matchifmissing = true)
public class dateformatconfig {
public static final string prefix = "mooding.localdateformat";
/**
* 中划线
*/
public static final string strikethrough = "-";
public static class localdatetimejsonserializer extends jsonserializer<localdatetime> {
@override
public void serialize(localdatetime value, jsongenerator jsongenerator, serializerprovider serializerprovider)
throws ioexception, jsonprocessingexception {
jsongenerator.writestring(dateutils.fmt.yyyy_mm_dd_hh_mm_ss.format(value));
}
}
public static class localdatetimejsondeserializer extends jsondeserializer<localdatetime> {
@override
public localdatetime deserialize(jsonparser jsonparser, deserializationcontext deserializationcontext)
throws ioexception, jsonprocessingexception {
return dateutils.fmt.yyyy_mm_dd_hh_mm_ss.parselocaldatetime(jsonparser.gettext());
}
}
public static class datejsonserializer extends jsonserializer<date> {
@override
public void serialize(date value, jsongenerator jsongenerator, serializerprovider serializerprovider)
throws ioexception, jsonprocessingexception {
simpledateformat sdf = new simpledateformat(dateutils.fmt.yyyy_mm_dd_hh_mm_ss.getpattern());
jsongenerator.writestring(sdf.format(value));
}
}
public static class datejsondeserializer extends jsondeserializer<date> {
@sneakythrows
@override
public date deserialize(jsonparser jsonparser, deserializationcontext deserializationcontext)
throws ioexception, jsonprocessingexception {
string text = jsonparser.gettext();
if (text.contains(strikethrough)) {
simpledateformat sdf = new simpledateformat(dateutils.fmt.yyyy_mm_dd_hh_mm_ss.getpattern());
return sdf.parse(jsonparser.gettext());
} else {
// 时间戳转换
return new date(long.parselong(text));
}
}
}
public static class localdatejsonserializer extends jsonserializer<localdate> {
@override
public void serialize(localdate value, jsongenerator jsongenerator, serializerprovider serializerprovider)
throws ioexception, jsonprocessingexception {
jsongenerator.writestring(dateutils.fmt.yyyy_mm_dd.format(value));
}
}
public static class localdatejsondeserializer extends jsondeserializer<localdate> {
@override
public localdate deserialize(jsonparser jsonparser, deserializationcontext deserializationcontext)
throws ioexception, jsonprocessingexception {
return dateutils.fmt.yyyy_mm_dd.parselocaldate(jsonparser.gettext());
}
}
public static class localtimejsonserializer extends jsonserializer<localtime> {
@override
public void serialize(localtime value, jsongenerator jsongenerator, serializerprovider serializerprovider)
throws ioexception, jsonprocessingexception {
jsongenerator.writestring(dateutils.fmt.hh_mm_ss.format(value));
}
}
public static class localtimejsondeserializer extends jsondeserializer<localtime> {
@override
public localtime deserialize(jsonparser jsonparser, deserializationcontext deserializationcontext)
throws ioexception, jsonprocessingexception {
return dateutils.fmt.hh_mm_ss.parselocaltime(jsonparser.gettext());
}
}
}
总结
到此这篇关于java spring boot日期和时间统一设置三种方法的文章就介绍到这了,更多相关springboot日期和时间统一设置内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论