DateFormat das Muster “yyyy-MM-dd NICHT'HH:mm:ss.SSS 'Z'" in Gson

Habe ich zwei Felder, wie unten (achten, dass das erste Feld hat Millisekunden Abschnitt):

{
  "updateTime":"2011-11-02T02:50:12.208Z",
  "deliverTime""1899-12-31T16:00:00Z"
}

Möchte ich Deserialisieren, die Json-string in ein Objekt mit Gson, so bekomme ich eine Gson Beispiel:

GsonBuilder gb = new GsonBuilder();
gb.setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
gson = gb.create();

Dem ersten Feld deserialisiert, um Java-Typ date: 2011-11-02 02:50:12.208 (sieht aus wie ignoriert Zeitzone " - "Z", das ich erwartet hatte). Jedoch, das zweite Feld ist deserialisiert, um 1900-01-01 00:00:00 (ich Lebe in China, +8 GMT hier), scheint es, dass die Zeitzone " - " Z " - spielt eine Rolle bei der Deserialisierung.

Warum das zweite Feld verwendet Zeitzone"? Es ist nicht das, was ich erwartet hatte.

  • Für mich ist es nicht zu analysieren, das zweite Datum string (java.text.ParseException: Unparseable date: "1899-12-31T16:00:00Z"). welche version von Gson verwenden Sie?
  • Warum tun Sie umschließen, T und Z in einfachen Anführungszeichen " ? Ich nicht (gson 1.7.1)
  • Nur, um Ihnen morefeedback, mein Muster MM/TT/JJ HH:mm:ss-SSSZ gibt mir ein Datum wie dieses : 02/20/13 18:03:11 089+0100
  • Zu Clemens, sorry das ich erst so spät Antworte . Ich bin mit gson 2.2.2.
  • Samuel, der Ergebnis-string erzeugt wurde, in irgendwo, dass ich keine Kontrolle über das format. Ich hatte versucht, löschen Sie die Anführungszeichen, gson würde geworfen, ein unbekanntes Zeichen Ausnahme. Was ich Frage ist der Unterschied von konvertieren Verhalten(eine ingore Zeit-zone, während andere würde nicht), wenn Millisekunden Feld vorhanden ist.
InformationsquelleAutor Domi.Zhang | 2013-02-16
Schreibe einen Kommentar