简体   繁体   English

将java.time转换为Calendar

[英]Converting java.time to Calendar

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

Getting a Calendar instant from ZonedDateTime is pretty straight-forward, provided you know that there exists a GregorianCalendar#from(ZonedDateTime) method. 如果您知道存在GregorianCalendar#from(ZonedDateTime)方法的GregorianCalendar#from(ZonedDateTime) ,那么从ZonedDateTime获取Calendar即时非常简单。 There was a discussion in Threeten-dev mail group , about why that method is not in Calendar class. Threeten-dev邮件组中讨论了为什么该方法不在Calendar类中。 Not a very deep discussion though. 虽然不是很深入的讨论。

However, there is no direct way to convert from an Instant to Calendar . 但是,没有直接的方法可以从Instant转换为Calendar You've to have an intermediate state for that: 你必须有一个中间状态:

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

This is probably because, as evident from the table on this oracle tutorial , an Instant maps to Date rather than a Calendar . 这可能是因为,从这个oracle教程的表中可以看出, Instant映射到Date而不是Calendar Similarly, a ZonedDateTime maps to a Calendar . 同样, ZonedDateTime映射到Calendar

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

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

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM