J'essaie de convertir une chaîne en un instant. Peux-tu m'aider?
J'obtiens l'exception suivante:
Causée par: Java.time.temporal.UnsupportedTemporalTypeException: champ non pris en charge: InstantSeconds à Java.time.format.Parsed.getLong (Parsed.Java:203) à Java.time.Instant.from (Instant.Java:373)
Mon code ressemble essentiellement à ceci
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String timestamp = "2016-02-16 11:00:02";
TemporalAccessor temporalAccessor = formatter.parse(timestamp);
Instant result = Instant.from(temporalAccessor);
J'utilise Java 8 Update 72.
Voici comment obtenir un instantané avec le fuseau horaire par défaut. Votre chaîne ne peut pas être analysée directement sur Instant car le fuseau horaire est manquant. Vous pouvez donc toujours obtenir celui par défaut
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String timestamp = "2016-02-16 11:00:02";
TemporalAccessor temporalAccessor = formatter.parse(timestamp);
LocalDateTime localDateTime = LocalDateTime.from(temporalAccessor);
ZonedDateTime zonedDateTime = ZonedDateTime.of(localDateTime, ZoneId.systemDefault());
Instant result = Instant.from(zonedDateTime);
Une méthode plus simple consiste à ajouter le fuseau horaire par défaut à l'objet formateur lors de sa déclaration
final DateTimeFormatter formatter = DateTimeFormatter
.ofPattern("yyyy-MM-dd HH:mm:ss")
.withZone(ZoneId.systemDefault());
Instant result = Instant.from(formatter.parse(timestamp));