Java?Spring?boot日期和時(shí)間統(tǒng)一設(shè)置三種方法
方法一:配置文件修改
修改配置文件配置application.yml:
spring: # 配置日期格式化 jackson: date-format: yyyy-MM-dd HH:mm:ss #時(shí)間戳統(tǒng)一轉(zhuǎn)換為指定格式 time-zone: GMT+8 # 時(shí)區(qū)修改為東8區(qū)
application.properties配置方式
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss #時(shí)間戳統(tǒng)一轉(zhuǎn)換為指定格式 spring.jackson.time-zone=GMT+8 # 時(shí)區(qū)修改為東8區(qū)
【注意】這里需要修改時(shí)區(qū)time-zone:數(shù)據(jù)庫(kù)默認(rèn)時(shí)區(qū)是格林尼治的時(shí)間,如果不設(shè)置,會(huì)比實(shí)際時(shí)間少8個(gè)小時(shí)(北京時(shí)間)。
方法二:在javabean實(shí)體類上加注解
@JsonFormat注解
@JsonFormat
注解用于屬性或方法上,將Date類型轉(zhuǎn)換為我們需要的類型顯示。
//在pattern上設(shè)置自己需要的格式 @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date createTime;
@DateTimeFormat注解
在需要進(jìn)行日期格式轉(zhuǎn)換的Date屬性上添加注解@DateTimeFormat(pattern = "需要轉(zhuǎn)換的格式")
//注解將yyyy-MM-dd的形式轉(zhuǎn)換為Date數(shù)據(jù) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date birthday;
@Temporal注解
通過(guò)@Temporal
注解,實(shí)現(xiàn)日期格式轉(zhuǎn)換,它自帶屬性參數(shù),比如:
@Entity public class MyEntity { @Id private Long id; // 得到Y(jié)YYY-MM-DD日期格式 @Temporal(TemporalType.DATE) private Date myDate; // 得到HH:MM:SS時(shí)間格式 @Temporal(TemporalType.TIME) private Date myTime; // 得到Y(jié)YYY-MM-DD HH:MM:SS時(shí)間格式 @Temporal(TemporalType.TIMESTAMP) private Date myTimestamp; // other fields and methods }
方法三:SpringBoot配置全局日期格式轉(zhuǎn)換器
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的實(shí)現(xiàn)描述 * */ @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 { // 時(shí)間戳轉(zhuǎn)換 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()); } } }
總結(jié)
到此這篇關(guān)于Java Spring boot日期和時(shí)間統(tǒng)一設(shè)置三種方法的文章就介紹到這了,更多相關(guān)Springboot日期和時(shí)間統(tǒng)一設(shè)置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot集成SSM、Dubbo、Redis、JSP的案例小結(jié)及思路講解
這個(gè)案例其實(shí)就是SpringBoot集成SSM、Dubbo、Redis、JSP,看起來(lái)感覺很繁瑣,其實(shí)就是很簡(jiǎn)單,下面通過(guò)案例分析給大家講解,感興趣的朋友跟隨小編一起看看吧2021-05-05詳解SpringBoot的三種緩存技術(shù)(Spring Cache、Layering Cache 框架、Alibaba J
這篇文章主要介紹了SpringBoot的三種緩存技術(shù),幫助大家更好的理解和學(xué)習(xí)springboot框架,感興趣的朋友可以了解下2020-10-10Java 時(shí)間轉(zhuǎn)換的實(shí)例代碼
下面小編就為大家?guī)?lái)一篇Java 時(shí)間轉(zhuǎn)換的實(shí)例代碼。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-07-07解決springboot application.properties server.port配置問題
這篇文章主要介紹了解決springboot application.properties server.port配置問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08關(guān)于Spring配置文件加載方式變化引發(fā)的異常詳解
這篇文章主要給大家介紹了關(guān)于Spring配置文件加載方式變化引發(fā)的異常的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-01-01