How to convert ZonedDateTime/OffsetDateTime to Date using ThreeTenABP?

Jonik picture Jonik · Jan 5, 2017 · Viewed 40.6k times · Source

Using the ThreeTen Android Backport library, what is the simplest way to convert a ZonedDateTime or OffsetDateTime into an old-school java.util.Date instance?

If I had full Java 8 libs at my disposal, this of course would be the way to do it (as in this question):

Date.from(zonedDateTime.toInstant());

But I cannot use that on Android; specifically Date.from(Instant instant) is missing.

Answer

Jonik picture Jonik · Jan 5, 2017

Well, one straightforward way is to get milliseconds since epoch and create the Date from that:

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

Feel free to point out if there's some preferable way.