J'ai une date stockée dans la base de données au format de chaîne ddMMyyyy et hh: mm et dans le fuseau horaire. Je veux créer un Instant basé sur cette information, mais je ne sais pas comment le faire.
quelque chose comme
LocalDateTime dateTime = LocalDateTime.of(2017, Month.JUNE, 1, 13, 39);
Instant instant = dateTime.toInstant(TimeZone.getTimeZone("ECT"));
Vous pouvez d’abord créer un ZonedDateTime
avec ce fuseau horaire, puis appeler toInstant
:
LocalDateTime dateTime = LocalDateTime.of(2017, Month.JUNE, 15, 13, 39);
Instant instant = dateTime.atZone(ZoneId.of("Europe/Paris")).toInstant();
System.out.println(instant); // 2017-06-15T11:39:00Z
J'ai également opté pour le nom de fuseau horaire complet (selon l'avis de Basil), car il est moins ambigu.
Oubliez l'ancienne classe TimeZone. Utilisez ZoneId
, car il est correctement thread-safe et vous pouvez simplement utiliser un dernier champ statique pour stocker la zone.
LocalDateTime dateTime = LocalDateTime.of(2017, Month.JUNE, 1, 13, 39);
ZonedDateTime.of(dateTime, ZoneId.of("ECT")).toInstant();