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

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

当我使用调试器调查日期时,我看到:
Wed Jun 14 00:00:00 BST 2017

但是一旦我用Spring boot controller返回它,我得到:
"date": "2017-06-13 23:00:00"
  • 是什么引起差异?
  • 为什么Java将日期视为BST
  • Java Date类包含时区信息还是长格式的纯时间戳?
  • 将DTO序列化为JSON时,默认情况下Spring boot是否使用UTC格式?
  • 最佳答案

    java.util.Date没有时区信息(只有long时间戳),但是它在toString()方法中使用系统的默认时区-您可以找到有关此here的更多信息(如注释中所建议)。

    只需检查TimeZone.getDefault()的值即可。可能是Europe/London-像现在夏天的伦敦一样,此时区的简称(由Date.toString()使用)是BST

    如您的输出所示,Spring可能正在使用UTC(因为2017-06-13 23:00:00中的UTC2017-06-14 00:00:00中的BST)。

    08-03 12:35
    查看更多