在Java8之前,我使用Joda的DateTime
类来包含时区信息,我可以轻松地在DateTime
sql和sql 之间进行转换Timestamp
.
迁移到Java8后,我应该替换哪个类?OffsetDateTime
还是ZonedDateTime
?
另外,我试图使用OffsetDateTime
,但似乎无法OffsetDateTime
从sql 构造回来Timestamp
.
对于Joda DateTime
和Timestamp
转换器,代码如下:
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);