java - @JsonFormat 使用不正确的时区转换日期
问题描述
我有一个带有初始值的日期字段的简单 POJO:
1985-09-17T01:00:00.000+0400
然后这个 Date 值被映射到一个 DTO 并带有注释的Date字段:
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssX")
private Date dateOfBirth;
然后显示结果:
1985-09-16T21:00:00Z
我尝试在 中设置时间戳属性@JsonFormat
,但这没有帮助,日期仍然无效。
如何正确转换日期?
解决方案
a 中的值java.util.Date
是自 Unix 纪元以来的毫秒数,该纪元发生在 UTC 时间 1970 年 1 月 1 日午夜。由于自固定纪元以来的毫秒数,因此java.util.Date
无论本地时区如何,在任何特定时刻,全球范围内的值都是相同的。
因此,在您的情况下,ZonedDateTime
如果您使用 java 8 ZonedDateTime ,最好使用 class
推荐阅读
- powershell - Powershell 事件日志报告
- docker - Kubernetes (Minikube):环境变量
- javascript - Google 地方详情 opening_hours
- python - IP 地址并不总是用 socket.gethostbyname 解析
- python-3.x - 可以用硒读取元素
- java - 带有 JSON 和 XML 泛型的 Jersey Jackson 自定义响应
- influxdb - influxdb:选择包含引号的值
- c# - 在c#中基于通配符返回字符串
- javascript - 使用js,是否可以防止在其他地方按shift时扩展文本选择
- php - Codeigniter Ajax 出现 404 错误