Я использую ZonedDateTime
для анализа и получения текущего времени в соответствии с часовым поясом.ZonedDateTime успешно разбирает, но выводимая строка отличается
При анализе следующих String
синтаксический анализ завершается успешно, но результат String
отличается. Почему это?
String dateTimeString = "2016-05-04T12:58:22+01:00[Europe/Paris]";
ZonedDateTime dateTime = ZonedDateTime.parse(dateTimeString, ISO_ZONED_DATE_TIME);
System.out.println(dateTimeString);
System.out.println(dateTime.toString());
Выход
2016-05-04T12:58:22+01:00[Europe/Paris]
2016-05-04T12:58:22+02:00[Europe/Paris]
В какой момент он решил изменить +1
к +2
и почему был брошен не исключение?
Я понимаю, что параметр в parenthese [Europe/Paris]
является необязательным, но здесь он имеет приоритет над смещением.
С другой стороны, следующий код
String dateTimeString = "2016-05-04T12:58:22+01:00";
ZonedDateTime dateTime = ZonedDateTime.parse(dateTimeString, ISO_ZONED_DATE_TIME);
System.out.println(dateTimeString);
System.out.println(dateTime.toString());
производит вывод
2016-05-04T12:58:22+01:00
2016-05-04T12:58:22+01:00
Спасибо за ваш ответ. Я понимаю, что это неправильная дата, почему она успешно анализируется? Это недостаток дизайна. – Olayinka
Я бы предположил, что в спецификации есть определенный приоритет. Но я этого не проверял. – spa