Java – 日期,格式,时区和Spring Boot默认值

我有一个带有日期字段的简单
Java对象:

@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date date;

当我用调试器调查日期时,我看到:

Wed Jun 14 00:00:00 BST 2017

但是一旦我用Spring启动控制器返回它,我得到:

"date": "2017-06-13 23:00:00"

>造成这种差异的原因是什么?
>为什么Java将日期视为BST?
> Java Date类是否包含时区信息或仅包含长格式的普通时间戳?
>在将DTO序列化为JSON时,默认情况下Spring引导是否使用UTC格式?

最佳答案 java.util.Date没有时区信息(只有长时间戳),但它在toString()方法中使用系统的默认时区 – 您可以找到有关此
here的更多信息(如评论中已建议的那样).

只需检查TimeZone.getDefault()的值.它可能是欧洲/伦敦 – 现在是夏天的伦敦,这个时区的短名称(由Date.toString()使用)是BST.

正如您的输出所暗示的那样,Spring可能正在使用UTC(2017-20-13 23:00:00在UTC中是2017-06-14 00:00:00在BST).

点赞