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

Jon*_*nik 13 java android threetenbp threetenabp

使用ThreeTen Android Backport库,转换ZonedDateTimeOffsetDateTime进入旧学校java.util.Date实例的最简单方法是什么?

如果我拥有完整的Java 8库,那当然就是这样做的方式(如本问题所示):

Date.from(zonedDateTime.toInstant());
Run Code Online (Sandbox Code Playgroud)

但我无法在Android上使用它; 特别Date.from(Instant instant)是缺少.

Jon*_*nik 13

好吧,一个直截了当的方法是从纪元开始获得毫秒并从中创建日期:

long epochMilli = zonedDateTime.toInstant().toEpochMilli();
Date date = new Date(epochMilli);
Run Code Online (Sandbox Code Playgroud)

如果有一些更好的方法,请随时指出.

  • @MichelJung还是在评论前仔细阅读问题?我要问的全部要点是`Date.from`在Android上不可用。 (2认同)

Jod*_*hen 10

看看DateTimeUtils哪个处理添加到类的方法,例如java.util.Datehttp : //www.threeten.org/threetenbp/apidocs/org/threeten/bp/DateTimeUtils.html

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

DateTimeUtils.toDate(zonedDateTime.toInstant())
Run Code Online (Sandbox Code Playgroud)

  • 很好,这个实用程序类是我所错过的。因此确切的代码将是`DateTimeUtils.toDate(zonedDateTime.toInstant())`。同样值得一提的是(在ThreeTenABP的资料中)它在引擎盖下仅使用了[我所想到的](http://stackoverflow.com/a/41480812/56285),即`new Date(instant.toEpochMilli()) `。 (2认同)