如何将 Instant 转换为 joda DateTime?

Sai*_*man 3 java datetime jodatime java-time

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

Bas*_*que 8

太长了;博士

new DateTime( myInstant.toEpochMilli() )
Run Code Online (Sandbox Code Playgroud)

java.time取代Joda-Time

你知道java.time是Joda-Time的继承者吗?如果您可以使用java.time,则无需使用Joda-Time。同一个人Stephen Colebourne领导了这两个项目,并吸取了Joda-Time的经验教训,在JSR 310中设计了java.time

按毫秒数转换

但要直接回答您的问题:从对象中提取Instant自 UTC 1970 年第一时刻以来的毫秒数。使用该计数来构造一个DateTime对象。

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

java.time.Instant myInstant = Instant.now() ; 
long millis = myInstant.toEpochMilli() ;
org.joda.time.DateTime dt = new DateTime( millis ) ;
Run Code Online (Sandbox Code Playgroud)

java.time中, anInstant始终采用 UTC。为了匹配您的构造函数DateTime,请将UTC常量传递给另一个构造函数

DateTime dt = new DateTime( millis , DateTimeZone.UTC ) ;
Run Code Online (Sandbox Code Playgroud)