java - 从 JSON 反序列化时,时间会添加到日期中

标签 java json date deserialization

我正在尝试使用 "date":"2018-01-03" 等格式通过 JSON 发送日期,但在我的 Java 代码中我得到 2018-01-03 02 :00:00 而不是我期望的 2018-01-03 00:00:00 。似乎它正在为我的约会添加一些时区。这可以吗还是我错过了什么?

最佳答案

要表示仅日期值,请使用仅日期类型而不是日期+时间类型。

本地日期

LocalDate 表示没有时间和时区的日期。

LocalDate ld = LocalDate.of( "2018-01-03" ) ;

分区日期时间

要获取一天中的第一时刻,请指定时区。

ZoneId z = ZoneId.of( "Asia/Kolkata" ) ;
ZonedDateTime zdt = ld.atStartOfDay( z ) ;

即时

要查看 UTC 中的同一时刻,请从 ZonedDateTime 中提取 Instant 对象。

Instant instant = zdt.toInstant() ;

这些话题已经被讨论过很多次了。搜索堆栈溢出以获取更多信息。

<小时/>

关于java.time

java.time框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧类 legacy日期时间类,例如 java.util.Date , Calendar , & SimpleDateFormat .

Joda-Time项目,现在位于 maintenance mode ,建议迁移到java.time类。

要了解更多信息,请参阅 Oracle Tutorial 。并在 Stack Overflow 上搜索许多示例和解释。规范为JSR 310 .

从哪里获取java.time类?

ThreeTen-Extra项目通过附加类扩展了 java.time。该项目是 java.time future 可能添加的内容的试验场。您可能会在这里找到一些有用的类,例如 Interval , YearWeek , YearQuarter ,和more .

关于java - 从 JSON 反序列化时,时间会添加到日期中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48081873/

相关文章:

java - 使用 @JsonAnyGetter/@JsonAnySetter 序列化 JSON 并更改属性名称 (Jackson)

java - 如何使用DateTimeFormatter在java8中处理yyyy-mm和yyyy

date - 宏变量到 SAS 日期

java - 使用 Commons-logging 设置日志写入方式

json - 检索 Google 电子表格工作表 JSON

javascript - 向浏览器请求模态以选择证书

PHP 存储字符串 JSON 与 JavaScript 的差异

mysql - 将 int 添加到 date SQL

java - 输入流的单元测试 IOException

java - Spring boot - 类验证不适用于 REST API