提问人:Jonik 提问时间:1/5/2017 最后编辑:Jonik 更新时间:5/26/2022 访问量:63770
如何使用ThreeTenABP将ZonedDateTime/OffsetDateTime转换为Date?
How to convert ZonedDateTime/OffsetDateTime to Date using ThreeTenABP?
问:
使用 ThreeTen Android 向后移植库,将 或 转换为老式实例的最简单方法是什么?ZonedDateTime
OffsetDateTime
java.util.Date
如果我有完整的 Java 8 库供我使用,这当然是这样做的方法(就像这个问题一样):
Date.from(zonedDateTime.toInstant());
但我不能在 Android 上使用它;特别是缺少 Date.from(Instant instant)。
答:
43赞
Jonik
1/5/2017
#1
好吧,一种直接的方法是获取自 epoch 以来的毫秒数,并从中创建日期:
long epochMilli = zonedDateTime.toInstant().toEpochMilli();
Date date = new Date(epochMilli);
请随时指出是否有更可取的方法。
评论
1赞
kiedysktos
10/9/2017
甚至是单行new Date(zonedDateTime.toInstant().toEpochMilli());
0赞
trebor
6/27/2022
@Sten stackoverflow.com/a/72392825/1880761 的答案甚至更简单。
19赞
JodaStephen
1/6/2017
#2
查看哪些处理添加到类中的方法,例如: http://www.threeten.org/threetenbp/apidocs/org/threeten/bp/DateTimeUtils.htmlDateTimeUtils
java.util.Date
编辑:使用它,完整的代码将是:
DateTimeUtils.toDate(zonedDateTime.toInstant())
评论
4赞
Jonik
1/9/2017
很好,这个实用程序类是我错过的。所以确切的代码是 .同样值得一提的是(查看 ThreeTenABP 来源),在引擎盖下,它只使用了我的想法,即 .DateTimeUtils.toDate(zonedDateTime.toInstant())
new Date(instant.toEpochMilli())
评论