Я пытаюсь обновить код, чтобы использовать функцию Java 8 для анализа нескольких форматов дат.мое местное время на моем ящике установлено на UTC-11 .
. При использовании SimpleDateformat работает приведенный ниже код.
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
Date correctDate = dateFormat.parse("2018-09-6T03:28:59.039-04:00");
//Gives me correct date
System.println( correctDate);//Wed Sep 5th 20:28:59 GMT-11:00 2018
Я пытаюсь обновить этот кодчтобы дать ту же дату, что и выше, с DateTimeFormatter в Java 8, чтобы я мог обрабатывать другой формат даты ..
DateTimeFormattter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss[.SSS]XXX");
LocalDateTime updateDate = LocalDateTime.parse( "2018-09-6T03:28:59.039-04:00", dtf);
//shows the wrong date of 2018-09-06 03:28:59.039.
System.out.println( updateDate.toString() );// 2018-09-06 03:28:59.039
[решено] Я смог исправить это с помощью ZonedDateTime.
ZonedDateTime zdt = ZonedDateTime.parse("2018-09-6T03:28:59.039-04:00");
zonedDateTime = zdt.withZoneSameInstance(ZoneId.of("GMT"));
Date correctDate = Date.from( zonedDateTime.toInstance());
// correctDate - это то, что я хотел Ср 5 сентября 20:28:59 GMT-11: 00 2018