我有一个带有日期字段的简单 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
在 UTC
中是 2017-06-14 00:00:00
在 BST
中)。
关于Java - 日期、格式、时区和 Spring Boot 默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44545359/