使用ZoneId.systemDefault()将java.util.Date转换为java.time.LocalDateTime

滑板车

我在将a转换java.util.Date为an时遇到了麻烦java.time.LocalDateTime并且在时区方面有一种很奇怪的效果:

Date date = new Date(-3155677200000L); // 1870-01-01T00:00:00.000+0100

LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()); // 1869-12-31T23:53:28

时间真的到了。6分32秒,这很烦人,因为它还会更改日期甚至年份。

它有做ZoneId.systemDefault(),如果我使用ZoneOffset它的作品。

这是为什么?这是JDK中的错误吗?似乎只发生在1893年之前的日期。

ZoneId.systemDefault() 是欧洲/柏林(欧洲中部时间+01:00)

相似地:

ZonedDateTime zonedDateTime = LocalDateTime.of(1870, 1, 1, 0, 0, 0, 0).atZone(ZoneId.systemDefault());

印刷:

1870-01-01T00:00+00:53:28[Europe/Berlin]

预期结果:

1870-01-01T00:00+01:00:00[Europe/Berlin]
乔恩·斯基特

根据IANA规则,转换是正确的。欧洲/柏林规则从以下这一行开始:

Zone    Europe/Berlin   0:53:28 -   LMT 1893 Apr

您从1869-12-31T23:00:00Z开始,所以当地时间是1869-12-31T23:53:28。

这里没有错误-只是一个错误的期望。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

java.lang.ClassCastException: java.util.LinkedHashMap 不能转换为 java.time.LocalDateTime

SQLException:无法使用休眠将java.util.Date强制转换为java.sql.Time

在java.time.LocalDateTime和java.util.Date之间进行转换

如何将java.util.Date转换为Java8 java.time.YearMonth

Java8将java.util.Date转换为java.time.ZonedDateTime

将java.util.Date转换为什么“ java.time”类型?

将java.util.Date转换为java.time.LocalDate

将java.time.LocalDate转换为java.util.Date类型

vaadin8 DateField:无法将java.time.LocalDate转换为java.util.Date

转换java.sql.date到java.time.LocalDateTime

如何将Joda-Time DateTime转换为java.util.Date,反之亦然?

在Java中使用不同格式将java.util.Date转换为java.util.Date

将java.sql.Date和java.util.Date转换为org.joda.time.LocalDate

使用org.json将JSON date(...)转换为java.Util.Date

使用GSON将java.time.LocalDateTime(java 8)序列化为js Date的最佳实践

从`java.time.Instant`转换为`java.util.Date`增加UTC偏移

如何将文本输入转换为java.time.LocalDateTime?

Apache Cassandra的Spring数据将java.time.LocalDateTime转换为UTC

从java.util.date转换为JodaTime

如何将ISO 8601日期时间字符串转换为java.util.LocalDateTime?

java.lang.ClassCastException:使用Univocity时无法将java.util.Date强制转换为java.lang.String

MongoDB找不到能够将[java.lang.String]类型转换为[java.time.LocalDateTime]类型的转换器

将DStream [java.util.Date]转换为DStream [String]

将 ZonedDateTime 转换为 java.util.Date

将java.util.Date转换为String

将String转换为java.util.Date

将字符串转换为java.util.date

是否可以将java.util.Date()转换为int

将字符串转换为java.util.date