web-dev-qa-db-fra.com

Comment convertir ZonedDateTime / OffsetDateTime en date en utilisant ThreeTenABP?

En utilisant la bibliothèque ThreeTen Android Backport , quel est le moyen le plus simple de convertir un ZonedDateTime ou OffsetDateTime en une ancienne école Java.util.Date Instance?

Si j'avais à disposition Java 8 libs à ma disposition, ce serait bien sûr la façon de le faire ( comme dans cette question ):

Date.from(zonedDateTime.toInstant());

Mais je ne peux pas l'utiliser sur Android; spécifiquement Date.from(Instant instant) est manquant.

13
Jonik

Voir DateTimeUtils qui gère les méthodes ajoutées aux classes comme Java.util.Date: http://www.threeten.org/threetenbp/apidocs/org/threeten/bp/DateTimeUtils.html

Modifier: en utilisant cela, le code complet serait:

DateTimeUtils.toDate(zonedDateTime.toInstant())
9
JodaStephen

Eh bien, une façon simple est d'obtenir des millisecondes depuis Epoch et de créer la date à partir de cela:

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

N'hésitez pas à indiquer s'il existe un moyen préférable.

13
Jonik