将java.time转换为Calendar

时间:2015-02-28 07:11:44

标签: java java-time

Calendarjava.time.Instant获取java.time.ZonedDateTime对象的最简单方法是什么?

3 个答案:

答案 0 :(得分:15)

Calendar获取ZonedDateTime即时消息非常简单,前提是您知道存在GregorianCalendar#from(ZonedDateTime)方法。在Threeten-dev mail group中进行了讨论,讨论了为什么该方法不在Calendar类中。虽然不是很深入的讨论。

但是,没有直接的方法可以从Instant转换为Calendar。你必须有一个中间状态:

Instant instant = Instant.now();
ZonedDateTime zdt = ZonedDateTime.ofInstant(instant, ZoneId.systemDefault());
Calendar cal1 = GregorianCalendar.from(zdt);

这可能是因为,从this oracle tutorial上的表格可以看出,Instant映射到Date而不是Calendar。同样,ZonedDateTime映射到Calendar

答案 1 :(得分:1)

您需要使用瞬间获取TimeZone,然后您才能获得日历。

Calendar myCalendar = GregorianCalendar.from(ZonedDateTime.ofInstant(Instant.now(), ZoneId.systemDefault()));

答案 2 :(得分:0)

GregorianCalendar.from(ZonedDateTime.ofInstant(instant, zoneId))怎么样?