如何将Instant转换为joda DateTime?

3

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

1个回答

8

简而言之

new DateTime( myInstant.toEpochMilli() )

java.time 取代 Joda-Time

你是否知道java.timeJoda-Time的后继者?如果你可以使用java.time,就没有必要再使用Joda-Time了。同一个人 Stephen Colebourne 领导了这两个项目,从Joda-Time中吸取经验教训,设计出了java.timeJSR 310)。

通过毫秒计数进行转换

但是直接回答你的问题:从1970年第一时刻开始到UTC时区的当前时间,Instant对象中提取毫秒数。使用该计数来构建一个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常量传递给另一个构造函数
DateTime dt = new DateTime( millis , DateTimeZone.UTC ) ;

我有一个 Instant,需要将 DateTime 传递给一个依赖项。我猜这应该可以工作 new DateTime(myInstantVar.toEpochMilli()) - Saif
/**
  • 构造一个实例,使用默认时区中的<code>ISOChronology</code>从1970-01-01T00:00:00Z开始的毫秒数。
  • @param instant 从1970-01-01T00:00:00Z开始的毫秒数 */ public DateTime(long instant) { super(instant); }
- Saif
1
谢谢您,先生。您快速地帮助我解决了问题 :) - Capitan Empanada

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接