Java?Spring?boot日期和時間統(tǒng)一設置三種方法
方法一:配置文件修改
修改配置文件配置application.yml:
spring:
# 配置日期格式化
jackson:
date-format: yyyy-MM-dd HH:mm:ss #時間戳統(tǒng)一轉(zhuǎn)換為指定格式
time-zone: GMT+8 # 時區(qū)修改為東8區(qū)application.properties配置方式
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss #時間戳統(tǒng)一轉(zhuǎn)換為指定格式 spring.jackson.time-zone=GMT+8 # 時區(qū)修改為東8區(qū)
【注意】這里需要修改時區(qū)time-zone:數(shù)據(jù)庫默認時區(qū)是格林尼治的時間,如果不設置,會比實際時間少8個小時(北京時間)。
方法二:在javabean實體類上加注解
@JsonFormat注解
@JsonFormat注解用于屬性或方法上,將Date類型轉(zhuǎn)換為我們需要的類型顯示。
//在pattern上設置自己需要的格式 @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date createTime;
@DateTimeFormat注解
在需要進行日期格式轉(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注解
通過@Temporal注解,實現(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時間格式
@Temporal(TemporalType.TIME)
private Date myTime;
// 得到Y(jié)YYY-MM-DD HH:MM:SS時間格式
@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的實現(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 {
// 時間戳轉(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é)
到此這篇關于Java Spring boot日期和時間統(tǒng)一設置三種方法的文章就介紹到這了,更多相關Springboot日期和時間統(tǒng)一設置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Spring?Data?JPA關系映射@OneToOne實例解析
這篇文章主要為大家介紹了Spring?Data?JPA關系映射@OneToOne實例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08
淺談BeanPostProcessor加載次序及其對Bean造成的影響分析
這篇文章主要介紹了淺談BeanPostProcessor加載次序及其對Bean造成的影響分析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-04-04
使用SpringBoot整合高德地圖實現(xiàn)路線規(guī)劃功能
在日常的開發(fā)項目中,地圖服務是很多系統(tǒng)的核心能力之一,尤其是在物流、同城配送、出行導航等領域,在近期的一個項目中,需要實現(xiàn)用戶下單后,系統(tǒng)需要根據(jù)起點和終點地址,自動計算推薦路徑,所以本文給大家分享了如何使用SpringBoot整合高德地圖實現(xiàn)路線規(guī)劃功能2025-07-07
Java實現(xiàn)WGS84/GCJ02/BD09的坐標互轉(zhuǎn)終極方案
這篇文章主要為大家詳細介紹了Java如何利用Geotools實現(xiàn)WGS84/GCJ02/BD09的坐標互轉(zhuǎn),文中的示例代碼講解詳細,需要的小伙伴可以了解下2025-09-09
SpringAOP 如何通過JoinPoint獲取參數(shù)名和值
這篇文章主要介紹了SpringAOP 通過JoinPoint獲取參數(shù)名和值的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06

