gpt4 book ai didi

Java 8 ZonedDateTime 或 OffsetDateTime 替换 Joda DateTime

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:14:57 25 4
gpt4 key购买 nike

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

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

此外,我尝试使用 OffsetDateTime,但似乎无法从 sql Timestamp 构造回 OffsetDateTime

对于 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 真的不错。

最佳答案

在 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);

关于Java 8 ZonedDateTime 或 OffsetDateTime 替换 Joda DateTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34609225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com