当前位置: 首页 > 知识库问答 >
问题:

如何使用ThreeTenABP将ZonedDateTime/OffsetDateTime转换为Date?

谭泉
2023-03-14

使用ThreeTen Android Backport库,将< code>ZonedDateTime或< code>OffsetDateTime转换为老式的< code>java.util.Date实例的最简单方法是什么?

如果我有完整Java8库在我的处置,这当然会是这样做(在这个问题):

Date.from(zonedDateTime.toInstant());

但是我不能在Android上使用它;特别是< code > date . from(Instant Instant)缺失。

共有2个答案

仲孙绍元
2023-03-14

请参阅< code>DateTimeUtils,它处理添加到类中的方法,如< code > Java . util . date :http://www . three ten . org/three ten BP/API docs/org/three ten/BP/datetime utils . html

编辑:使用它,完整的代码将是:

DateTimeUtils.toDate(zonedDateTime.toInstant())
王炜
2023-03-14

好吧,一种简单的方法是获取自纪元以来的毫秒数,并从中创建日期:

long epochMilli = zonedDateTime.toInstant().toEpochMilli();
Date date = new Date(epochMilli);

如果有更好的方法,请随时指出。

 类似资料:
  • 我是java.time包的新手。我有一个本地日期是2015-12-10。我需要将此转换为ZonedDateTime。时间应该是00:00:00,区域是zoneoffset.utc。 dateTimeException:无法从java.time.localDate类型的TemporalAccessor:2015-12-10获取Instant 我也试过: 这会产生意想不到的结果。 我查看了API并尝试

  • 我正在尝试将JAXBElement-XMLGregorianCalendar转换为offsetDateTime。我可以这样做,但我想以特定格式转换日期。 代码我用于转换:日历值是2016-03-25T00:00:00 05:30,但我需要隐蔽类型以偏移Date时间所以我正在做下面的转换 作为响应,我在转换后得到的值:2016-03-24T18:30:00Z,而我想要转换后的值为:2016-03-2

  • 但这一个返回的是基于本地时间的毫秒。也不考虑ZoneID。 假设。如果我将其转换为具有区域id(“Asia/Kolkata”)的,那么我将得到()。然后以UTC转换为EpochMilli(1554854400000)=()。

  • 我正在尝试使用java.time类(JSR310)的后端口:ThreeTen-Backport项目将对象转换为对象。 我的理解是,后端口应该与Java8上的功能类似(不在Java8上)。目前,该系统是在Java7上运行的。 每当我尝试执行以下代码时: 我得到以下消息: GregorianCalendar类型的方法from(ZonedDateTime)未定义 TIA

  • 在某些情况下,日期是错误的。有什么建议吗?

  • 问题内容: 我的目的,其被构造这样 如何将其转换为瑞士时区?预期结果应该是。 问题答案: 如何在瑞士的时区将其转换为LocalDateTime? 您可以将UTC 转换为带有瑞士时区的UTC ,但要保持同一时间,然后根据需要使用该时间。我很想将它保留为,除非您出于某些其他原因需要它。