2017-01-05 10 views
8

Przy użyciu biblioteki , w jaki sposób można najprościej przekonwertować urządzenie ZonedDateTime lub OffsetDateTime na instancję starej szkoły java.util.Date?Jak przekonwertować ZonedDateTime/OffsetDateTime na Date using ThreeTenABP?

Gdybym miał pełne Java 8 bibliotekami do mojej dyspozycji, to oczywiście byłoby sposób to zrobić (as in this question):

Date.from(zonedDateTime.toInstant()); 

Ale nie mogę użyć tego na Androida; w szczególności brakuje Date.from(Instant instant).

Odpowiedz

3

Zobacz DateTimeUtils który obsługuje metody dodane do klas jak java.util.Date: http://www.threeten.org/threetenbp/apidocs/org/threeten/bp/DateTimeUtils.html

+0

Nicea, ta klasa jest narzędzie co przeoczyłem. Tak więc dokładny kod byłby "DateTimeUtils.toDate (zonedDateTime.toInstant())". Warto również zauważyć (patrząc na źródła ThreeTenABP), że pod maską używa właśnie [co myślałem] (http://stackoverflow.com/a/41480812/56285), tj. 'New Date (instant.toEpochMilli()) '. – Jonik

6

Cóż, jeden prosty sposób jest uzyskać milisekund od epoki i stworzyć Data od że:

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

krępuj się wskazać, czy istnieje jakiś sposób korzystne.

+0

lub nawet jedno-liner 'new Date (. ZonedDateTime.toInstant() toEpochMilli());' – kiedysktos

Powiązane problemy