阿毛
It's me !
想你所想

关于代码中时区使用时的注意事项

对于jdk本身的SimpleDateFormat或commons-lang包中的DateFormatUtils等,如果不显示指定TimeZone,则会使用默认的timeZone,通过jvm去获取操作系统所在时区,如下图所示:

https://file.blog.humh.cn/2020/04/图片-6.png

但是对于部分工具,并不是这样,它的默认时区并不是采用操作系统所在时区。
如:SpringMVC默认JSON序列化采用jackson,其中对于Date这种时间类型字段,支持格式化输出,只需要在字段上标记@JsonFormat注解,定义pattern即可。其中它可以指定timeZone,如果没有显示指定时区的话,他会采用默认时区,但这里的默认时区并不像大多数时间工具一样,通过jvm获取操作系统时区!!如下:

https://file.blog.humh.cn/2020/04/图片-7.png
JsonFormat doc

doc中描述很清楚,默认并不是jvm的,而是UTC!!

所以务必在使用该注解的时候,显示指定时区。

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    private Date sendTime;

humh

文章作者

站长本人,一个憨批!

发表回复

textsms
account_circle
email

想你所想

关于代码中时区使用时的注意事项
对于jdk本身的SimpleDateFormat或commons-lang包中的DateFormatUtils等,如果不显示指定TimeZone,则会使用默认的timeZone,通过jvm去获取操作系统所在时区,如下图所示: 但是对…
扫描二维码继续阅读
2020-04-14