对于jdk本身的SimpleDateFormat或commons-lang包中的DateFormatUtils等,如果不显示指定TimeZone,则会使用默认的timeZone,通过jvm去获取操作系统所在时区,如下图所示:
但是对于部分工具,并不是这样,它的默认时区并不是采用操作系统所在时区。
如:SpringMVC默认JSON序列化采用jackson,其中对于Date这种时间类型字段,支持格式化输出,只需要在字段上标记@JsonFormat
注解,定义pattern即可。其中它可以指定timeZone,如果没有显示指定时区的话,他会采用默认时区,但这里的默认时区并不像大多数时间工具一样,通过jvm获取操作系统时区!!如下:
doc中描述很清楚,默认并不是jvm的,而是UTC!!
所以务必在使用该注解的时候,显示指定时区。
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8") private Date sendTime;
发表评论