2017-02-17 5 views
-1

Я пытаюсь проанализировать следующий формат даты '2017-02-16T17: 29: 12.12T + 0200' в ZonedDateTime.Java-формат даты для ZonedDateTime

Моя цель состоит в том, чтобы иметь ZonedDateTime, который хранит 2017-02-16T17: 29: 12.12 немодифицированный (не перемещается в системный часовой пояс) и должен быть связан с часовым поясом, обозначенным +2 часами (с по Гринвичу).

@Test 
public void testParseCustomDate() throws Exception { 
    String format = "yyyy-MM-dd'T'HH:mm:ss.S'T'Z"; 
    String value = "2017-02-16T17:29:12.12T+0300"; 

    Date date = new SimpleDateFormat(format).parse(value); 
    System.out.println(date); 

    ZonedDateTime dateTime = ZonedDateTime.parse(value, DateTimeFormatter.ofPattern(format)); 
    System.out.println(dateTime); 
} 

В приведенном выше примере даты успешно анализируется с помощью SimpleDateFormat, но не с ZonedDateTime.parse

ответ

1

SimpleDateFormat и DateTimeFormatter различны. Чтобы разобрать дату выборки, вы должны добавить один «S» для второй фракции:

String format = "yyyy-MM-dd'T'HH:mm:ss.SS'T'Z"; 

Он будет производить следующий вывод:

Thu Feb 16 15:29:12 CET 2017 
2017-02-16T17:29:12.120+03:00 
+0

спасибо, что помогает – endryha

Смежные вопросы