【问题标题】:Java - date, format, time zones and Spring Boot defaultsJava - 日期、格式、时区和 Spring Boot 默认值
【发布时间】:2017-11-16 15:22:19
【问题描述】:

我有一个带有日期字段的简单 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"
  1. 造成这种差异的原因是什么?
  2. 为什么 Java 将日期视为 BST
  3. Java Date 类是否包含时区信息或仅包含长格式的普通时间戳?
  4. 在将 DTO 序列化为 JSON 时,Spring boot 是否默认使用 UTC 格式?

【问题讨论】:

标签: java date spring-boot timezone


【解决方案1】:

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

只需检查TimeZone.getDefault() 的值。可能是Europe/London - 因为现在是夏季的伦敦,这个时区的简称(Date.toString() 使用)是BST

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-10
    • 2022-10-14
    • 2021-08-24
    • 2016-08-01
    • 1970-01-01
    • 2013-05-09
    • 2021-05-20
    • 2022-12-07
    相关资源
    最近更新 更多