Je travaille avec la nouvelle API DateTime de Java 8.
Comment convertir un LocalDate en Instant? Je reçois une exception avec
LocalDate date = LocalDate.of(2012, 2, 2);
Instant instant = Instant.from(date);
et je ne comprends pas pourquoi.
Pour le convertir en un instant, vous devez avoir une instance LocalDateTime, par exemple:
LocalDate.now().atStartOfDay().toInstant(ZoneOffset.UTC)
La classe Instant
représente un point instantané sur la ligne de temps. La conversion vers et depuis un LocalDate
nécessite un fuseau horaire. Contrairement à d'autres bibliothèques de date et d'heure, JSR-310 ne sélectionne pas automatiquement le fuseau horaire. Vous devez donc le fournir.
LocalDate date = LocalDate.now();
Instant instant = date.atStartOfDay(ZoneId.systemDefault()).toInstant();
Cet exemple utilise le fuseau horaire par défaut de la machine virtuelle Java - ZoneId.systemDefault()
- pour effectuer la conversion. Voir ici pour un réponse plus longue à une question connexe.
Mise à jour: La réponse acceptée utilise LocalDateTime::toInstant(ZoneOffset)
qui n'accepte que ZoneOffset
. Cette réponse utilise LocalDate::atStartOfDay(ZoneId)
qui accepte n'importe quel ZoneId
. En tant que telle, cette réponse est généralement plus utile (et devrait probablement être la réponse acceptée).
PS J'étais l'auteur principal de l'API