1.全局时间格式化
首先,我们找到 Spring Boot 的配置文件 application.properties(或 application.yml),只需要在 application.properties 配置文件中添加以下两行配置:
# 格式化全局时间字段(LocalDateTime不适用)
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
# 指定时间区域类型
spring.jackson.time-zone=GMT+8
1.1实现原理
Controller 在返回数据时,会自动调用 Spring Boot 框架中内置的 JSON 框架 Jackson,对返回的数据进行统一的 JSON 格式化处理,在处理的过程中它会判断配置文件中是否设置了“spring.jackson.date-format=yyyy-MM-dd HH:mm:ss”,如果设置了,那么 Jackson 框架在对时间类型的字段输出时就会执行时间格式化的处理,这样我们就通过配置来实现全局时间字段的格式化功能了。
为什么要指定时间区域类型“spring.jackson.time-zone=GMT+8”呢?
原因是,如果我们不指定时间区域类型,那么查询出来的时间就会比预期的时间少 8 个小时,这因为我们(中国)所处的时间区域比世界时间少 8 个小时导致的,而当我们设置了时区之后,我们的时间查询才会和预期时间保持一致。
GMT 是什么?
时间区域设置中的“GMT” 是什么意思?
Greenwich Mean Time (GMT) 格林尼治时间(可以问问度度),也叫做世界时间。
2.部分时间格式化
我们不需要对全局的时间都进行统一的处理,这种情况我们可以使用注解的方式来实现部分时间字段的格式化. 我们需要在实体类 UserInfo 中添加
@JsonFormat注解,这样就可以实现时间的格式化功能了,实现代码如下:
@JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", timezone = "GMT+8")
//Date类型
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createtime;
//LocalDateTime类型
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime createtime;
从上述结果可以看出,使用注解的方式也可以实现时间的格式化。它的实现原理和第1种时间格式化的实现原理类似,都是在返回数据之前,对相应的字段进行时间格式化的处理。
本文围绕Spring Boot的时间格式化展开。介绍了全局时间格式化,通过在配置文件添加配置,利用Jackson框架实现,还说明了指定时区的原因。同时阐述了部分时间格式化,可在实体类中用注解实现,两种方式原理均是返回数据前处理时间字段。
1382

被折叠的 条评论
为什么被折叠?



