如何将 Instant 转换为 joda DateTime?

How to convert Instant to joda DateTime?

如何将 Instant(java.time.Instant) 转换为 joda DateTime(org.joda.time.DateTime)?或者更确切地说,最好的方法是什么?

tl;博士

new DateTime( myInstant.toEpochMilli() )

java.time 替换 Joda-Time

你明白java.timeJoda-Time的继承者吗?如果您有 java.time 供您使用,则无需使用 Joda-Time。同一个人 Stephen Colebourne 领导了这两个项目,吸取了 Joda-Time 的经验教训,在 [= 中设计了 java.time 19=].

以毫秒为单位转换

但要直接回答你的问题:Extract from the Instant object a count of milliseconds since the first moment of 1970 in UTC. Use that count to construct a DateTime对象。

注意潜在的数据丢失。 Instant 可能包含微秒或纳秒。当然,在提取毫秒时,这些将被忽略。

java.time.Instant myInstant = Instant.now() ; 
long millis = myInstant.toEpochMilli() ;
org.joda.time.DateTime dt = new DateTime( millis ) ;

java.time 中,Instant 始终采用 UTC。要匹配您的 DateTime,请传递 UTC constant to this other constructor.

DateTime dt = new DateTime( millis , DateTimeZone.UTC ) ;