web-dev-qa-db-fra.com

Convertir LocalTime (Java 8) en date

J'essaie de convertir un Java.time.LocalTime objet à Java.util.Date mais ne trouve aucune méthode appropriée. Quelle est la bonne façon de procéder?

Y a-t-il une raison pour laquelle Java ne semble pas être livré avec une méthode de conversion directe intégrée?

Pour les doublons possibles:
Comment convertir le temps joda - Ne fonctionne pas pour moi, il me manque probablement des bibliothèques "joda"?
Comment convertir la date en LocalTime? - Ceci adresse la conversion dans l'autre sens.

15
Jbartmann

LocalTime ne peut en fait pas être converti en date, car il ne contient que la partie heure de DateTime. Comme 11h00. Mais aucun jour n'est connu. Vous devez le fournir manuellement:

LocalTime lt = ...;
Instant instant = lt.atDate(LocalDate.of(A_YEAR, A_MONTH, A_DAY)).
        atZone(ZoneId.systemDefault()).toInstant();
Date time = Date.from(instant);

Voici un article de blog qui explique toutes les conversions entre la nouvelle et l'ancienne API.

Il n'y a pas de méthode de conversion intégrée simple, car ces API abordent l'idée de la date et de l'heure de manière complètement différente.

17
Dariusz
LocalTime lt = ...;
Instant instant = lt.atDate(LocalDate.of(A_YEAR, A_MONTH, A_DAY)).
        atZone(ZoneId.systemDefault()).toInstant();
Date time = Date.from(instant);

De: http://blog.progs.be/542/date-to-Java-time

4
Alexandre Beaudet

Voici une autre approche:

Nous pouvons ajouter un LocalDate au LocalTime afin d'en faire un LocalDateTime puis le convertir en Date en utilisant la méthode valueOf de Java.sql.Timestamp comme ceci:

LocalTime localTime = LocalTime.now();
Date date = Java.sql.Timestamp.valueOf(localTime.atDate(LocalDate.now()));
0
Spyros El.