2016-07-27 8 views
1

Ich möchte eine JSON-Zeichenfolge mit Datetime-Informationen wie 2016-07-22T11: 20: 48.430-07: 00 zu einem Datum-Zeit-Objekt deserilisieren mit Jackson, derzeit verwende ich Joda Datetime, es funktioniert gut, konnte ich 2016-07-22T11: 20: 48.430-07: 00 zu Datetime (UTC) konvertieren.in Java 8, wie eine Datumszeitinformation mit Zeitzone serialisiert/deserialisiert wird

Allerdings möchte ich Java 8 Datum Zeit Objekt verwenden, irgendeine Empfehlung? Local keine Zeitzoneninformationen haben, und zoneDateTime scheint nicht in der Lage sein, mit Format zu behandeln wie: 2016-07-22T11: 20: 48,430 bis 07: 00

+0

https://github.com/FasterXML/jackson-datatype-jsr310 – shmosel

+0

Terminologie: Dieser Eingang hat eine [offset-from-UTC] (https://en.m.wikipedia.org/wiki/UTC_offset) nicht eine Zeitzone. Eine Zeitzone ist ein Offset * plus * eine Reihe von Regeln für die Behandlung von Anomalien wie Sommerzeit (DST). –

Antwort

0

OffsetDateTime

Ihre Eingabe-Strings haben eine offset-from-UTC kein Zeitzone. Eine Zeitzone ist ein Offset plus eine Reihe von Regeln für die Behandlung von Anomalien wie Sommerzeit (DST).

Verwenden Sie für Datums- und Uhrzeitwerte mit einem Offset die Klasse OffsetDateTime.

OffsetDateTime odt = OffsetDateTime.parse("2016-07-22T11:20:48.430-07:00"); 

Sie können bei Bedarf eine Vollzeitzone zuweisen.

ZoneId zoneId = ZoneId.of("Europe/Paris"); 
ZonedDateTime zdt = odt.atZone(zoneId); 

Für den UTC-Wert einen Instant extrahieren.

Instant instant = odt.toInstant(); 

Adapter Bibliothek

Ich benutze Jackson mich nicht, aber ich weiß, Sie verschiedene Adapterklassen verwenden können java.time Klassen zu behandeln. Sehen Sie sich den ersten Kommentar zur Frage an. Siehe this Answer zu einer ähnlichen Frage für eine andere.

Hoffentlich Jackson wird schließlich modernisiert, um diese Typen direkt zu behandeln.

Verwandte Themen