Il tuo codice funziona, a partire dal Java 8 Update 51
il codice sta lavorando ora, come di Java 8 Update 51 su Mac OS X Mountain Lion. Answer di Holger che potrebbe essersi verificato un errore nelle versioni precedenti di Java. Comprensibile come il framework java.time è nuovo di zecca in Java 8.
Ecco una copia modificata del codice.
String dateStr = "2014-08-16T05:03:45-05:00";
TemporalAccessor creationAccessor = DateTimeFormatter.ISO_OFFSET_DATE_TIME.parse(dateStr);
Instant instant = Instant.from(creationAccessor);
long millisSinceEpoch = instant.toEpochMilli();
ZonedDateTime zdt = ZonedDateTime.ofInstant(instant, ZoneOffset.of("-05:00"));
Discarica per consolle.
System.out.println("dateStr: " + dateStr);
System.out.println("instant: " + instant);
System.out.println(" millis: " + millisSinceEpoch);
System.out.println(" zdt: " + zdt);
Quando eseguito.
dateStr: 2014-08-16T05:03:45-05:00
instant: 2014-08-16T10:03:45Z
millis: 1408183425000
zdt: 2014-08-16T05:03:45-05:00
Canonical Metodo:
parse(CharSequence text, TemporalQuery<T> query)
Si consiglia di realizzare il vostro analisi utilizzando un metodo alternativo.
Il documento di classe per DateTimeFormatter
indica che il modo normale di analisi deve essere una chiamata a DateTimeFormatter::parse(CharSequence text, TemporalQuery<T> query)
anziché DateTimeFormatter::parse(CharSequence text)
.
Così, invece di questo:
String input = "2007-12-03T10:15:30+01:00[Europe/Paris]" ;
TemporalAccessor temporalAccessor = DateTimeFormatter.ISO_DATE_TIME.parse(input) ;
... fare questo, in cui si aggiunge un secondo argomento, l'argomento di essere un method reference in Java 8 syntax, per chiamare il metodo di conversione from
(in questo esempio, ZonedDateTime :: from
):
String input = "2007-12-03T10:15:30+01:00[Europe/Paris]" ;
ZonedDateTime zdt = DateTimeFormatter.ISO_DATE_TIME.parse(input , ZonedDateTime :: from) ;
Scarico alla console.
System.out.println("input: " + input);
System.out.println(" zdt: " + zdt);
Quando eseguito.
input: 2007-12-03T10:15:30+01:00[Europe/Paris]
zdt: 2007-12-03T10:15:30+01:00[Europe/Paris]
Il codice che hai pubblicato compila e gira bene. Quale versione di Java 8 stai usando? – assylias