Как преобразовать XSD DateTime в LocalDateTime с часовым пояской по умолчаниюJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как преобразовать XSD DateTime в LocalDateTime с часовым пояской по умолчанию

Сообщение Anonymous »

Действительно xsd datetime значения:
2002-05-30T09:00:00
2002-05-30T09:30:10.5
2002-05-30T09:30:10Z
2002-05-30T09:30:10-06:00

Когда я пытался проанализировать эти значения с помощью ZoneDAtetime
public static void main(String[] args) {
System.out.println(ZonedDateTime.parse(value, DateTimeFormatter.ISO_DATE_TIME).withZoneSameInstant(ZoneId.systemDefault()).toLocalDateTime());
}
< /code>
В первых двух значениях, если не сбои, потому что нет часового пояса: < /p>
Exception in thread "main" java.time.format.DateTimeParseException: Text '2017-12-05T10:05:19.296' could not be parsed: Unable to obtain ZonedDateTime from TemporalAccessor: {},ISO resolved to 2017-12-05T10:05:19.296 of type java.time.format.Parsed

Когда я буду использовать localdatetime , он просто игнорирует часовой застрой в последних двух значениях.
public static void main(String[] args) {
System.out.println(LocalDateTime.parse("2002-05-30T09:30:10-06:00", DateTimeFormatter.ISO_DATE_TIME)); // print 2002-05-30T09:30:10 and I am in +1 timezone
}

Итак, как правильный способ преобразовать этот XSD DateTime? Так, может быть, лучшее решение для преобразования XSD: DateTime - использовать старый способ к gregoriancalendar , который также поддерживает Zondedatetime ?
public static LocalDateTime parseDateTime(String strVal) {
try {
if (strVal == null || strVal.isEmpty())
return null;
return ((GregorianCalendar) (DatatypeConverter.parseDateTime(strVal))).toZonedDateTime()
.withZoneSameLocal(ZoneId.systemDefault()).toLocalDateTime();
} catch (Exception e) {
throw new IllegalArgumentException(e);
}
}


Подробнее здесь: https://stackoverflow.com/questions/476 ... -time-zone
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»