当前位置:  开发笔记 > 编程语言 > 正文

Java 8 ZonedDateTime或OffsetDateTime替换Joda DateTime

如何解决《Java8ZonedDateTime或OffsetDateTime替换JodaDateTime》经验,为你挑选了1个好方法。

在Java8之前,我使用Joda的DateTime类来包含时区信息,我可以轻松地在DateTimesql和sql 之间进行转换Timestamp.

迁移到Java8后,我应该替换哪个类?OffsetDateTime还是ZonedDateTime

另外,我试图使用OffsetDateTime,但似乎无法OffsetDateTime从sql 构造回来Timestamp.

对于Joda DateTimeTimestamp转换器,代码如下:

val joda = DateTime.now()
val sqlJoda = new Timestamp(joda.getMillis)
val jodaBack = new DateTime(sqlJoda)

但对于Java8,

val java8 = OffsetDateTime.now()
val sqlJava8 = new Timestamp(java8.toInstant.toEpochMilli)
val java8Back = ???

有人对此有所了解吗?看来Joda DateTime真的很棒.



1> Mateusz Srok..:

在java.time中使用Java 8 API,您可以执行以下操作:

long ms_since_epoch = 1_500_000_000_000L;
Instant instant = Instant.ofEpochMilli(ms_since_epoch);

// convert milliseconds in UTC to date
OffsetDateTime dateUTC = OffsetDateTime.ofInstant(instant, ZoneOffset.UTC);

使用您的约定:

val java8 = OffsetDateTime.now()
val sqlJava8 = new Timestamp(java8.toInstant.toEpochMilli)
val java8Back = OffsetDateTime.ofInstant(sqlJava8.toInstant(), ZoneOffset.UTC);


是.但您可以使用不同的ZoneId将其更改为相应的时区.
推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有