So konvertieren Sie die XSD DateTime in LocalDatetime mit der StandardzeitzoneJava

Java-Forum
Anonymous
 So konvertieren Sie die XSD DateTime in LocalDatetime mit der Standardzeitzone

Post by Anonymous »

gültiges xsd datetime Werte sind:

Code: Select all

2002-05-30T09:00:00
2002-05-30T09:30:10.5
2002-05-30T09:30:10Z
2002-05-30T09:30:10-06:00
Als ich versuchte, diese Werte mit zonedDatetime zu analysieren

Code: Select all

public static void main(String[] args) {
System.out.println(ZonedDateTime.parse(value, DateTimeFormatter.ISO_DATE_TIME).withZoneSameInstant(ZoneId.systemDefault()).toLocalDateTime());
}
< /code>
In den ersten beiden Werten, wenn fehlschlägt, weil es keine Zeitzone gibt: < /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
Wenn ich localDateTime verwenden werde, ignoriert es nur Timezone in den letzten beiden Werten.

Code: Select all

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
}
Wie können Sie dieses XSD -DateTime richtig konvertieren? Vielleicht die beste Lösung für das Konvertieren von XSD: DateTime ist die Verwendung der alten Methode zu Gregoriancalendar , die auch zondedAtetime ?
unterstützt

Code: Select all

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);
}
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post