springboot统一时间格式

本文介绍了如何在SpringBoot应用中统一设置日期时间格式,通过在配置文件中添加`spring.mvc.date-format`和`spring.jackson.date-format`属性,并指定`time-zone`为`GMT+8`,实现日期时间的统一展示。
Spring Boot 应用中配置日期时间格式可以通过多种方式进行,包括全局配置、注解方式以及自定义格式化类,以满足不同场景下的需求。 ### 全局日期格式化配置 可以在 Spring Boot 中通过配置类来实现全局的日期格式化。这种方式适用于统一处理日期参数的绑定和返回格式。可以通过实现 `WebMvcConfigurer` 接口并重写 `addFormatters` 方法来添加自定义的日期格式化器。例如,通过 `DateTimeFormatterRegistrar` 注册一个日期格式化规则: ```java @Configuration public class DateFormatConfig implements WebMvcConfigurer { @Override public void addFormatters(FormatterRegistry registry) { DateTimeFormatterRegistrar registrar = new DateTimeFormatterRegistrar(); registrar.setDateFormatter(DateTimeFormatter.ofPattern("yyyy-MM-dd")); registrar.setTimeFormatter(DateTimeFormatter.ofPattern("HH:mm:ss")); registrar.setDateTimeFormatter(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); registrar.registerFormatters(registry); } } ``` 该配置可以统一处理请求参数中的日期格式转换,自动匹配参数格式并绑定到 `Date` 类型的字段上。 ### 处理返回值的日期格式 对于返回给前端的日期格式Spring Boot 默认使用 `Jackson` 序列化对象为 JSON,此时需要配置 `Jackson` 的日期格式化规则。可以通过在 `application.properties` 文件中设置: ```properties spring.jackson.date-format=yyyy-MM-dd HH:mm:ss spring.jackson.time-zone=GMT+8 ``` 或者通过自定义 `Jackson2ObjectMapperBuilderCustomizer` 来实现更复杂的配置: ```java @Bean public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() { return builder -> { builder.pattern("yyyy-MM-dd HH:mm:ss"); builder.timeZone(TimeZone.getTimeZone("GMT+8")); }; } ``` ### 注解方式格式化日期 对于特定的实体类字段,可以通过 `@JsonFormat` 注解来指定序列化和反序列化的日期格式: ```java public class Contact { @JsonFormat(pattern = "yyyy-MM-dd") private LocalDate birthday; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Europe/Zagreb") private Date lastUpdate; } ``` 此外,如果需要处理请求参数的格式化,可以结合 `@DateTimeFormat` 注解: ```java public class UserRequest { @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate birthDate; } ``` ### 自定义格式化类 对于更复杂的场景,可以通过实现 `Converter` 接口来定义自定义的日期格式化逻辑,并注册到 `FormatterRegistry` 中。例如,定义一个将字符串转换为 `LocalDate` 的转换器: ```java @Component public class StringToLocalDateConverter implements Converter<String, LocalDate> { private final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); @Override public LocalDate convert(String source) { return LocalDate.parse(source, formatter); } } ``` 然后通过配置类注册该转换器: ```java @Configuration public class ConverterConfig implements WebMvcConfigurer { @Autowired private StringToLocalDateConverter stringToLocalDateConverter; @Override public void addFormatters(FormatterRegistry registry) { registry.addConverter(stringToLocalDateConverter); } } ``` 通过上述方式,可以灵活地配置 Spring Boot 应用中的日期时间格式,满足输入、输出和全局处理的不同需求。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值