Parsen von json-Zeichenkette für das Datum in android
Bekomme ich einen json-string mit der Anzahl der Millisekunden an, die nach 1970 von dem server in meiner android app.
Sieht wie folgt aus: \/Date(1358157378910+0100)\/
.
Wie kann ich parse diese in eine Java-calendar-Objekt, oder einfach nur einige Datum-Wert aus? Sollte ich anfangen mit regex und bekomme nur die millisecons? Der server ist .NET.
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scheint die Zeit zu haben auch die Zeitzone gibt, also ich würde so etwas tun:
Kopiert von der akzeptierten Antwort, einige Fehler behoben 🙂
Yeah, kann u
substring
Ihrejson
von "(" zu ")", konvertierenstring
zu millis und pass incalendar
Objekt.Ich denke, dass kann man so:
json
es ist einJsonElement
EDIT: Du kannst ohne Datum () nur die zahlen, können Sie nicht? Und wenn Sie mit JSON, warum das nicht funktioniert mit dem Date-Objekt?
Versuchen Sie, diese..
Hier ist eine komplette Lösung, basierend auf dem @pablisco Antwort:
Einige der anderen Antworten so durch pablisco sind richtig zu Parsen von string zu extrahieren, die Anzahl, eine Anzahl von Millisekunden seit der Epoche. Aber Sie benutzen veralteten Datum-Zeit-Klassen.
java.Zeit
Java 8 und später die java.Zeit framework integriert. Eine enorme Verbesserung. Inspiriert von Joda-Time. Definiert durch JSR 310. Erweitert durch die ThreeTen-Extra Projekt. Zurück portiert auf Java 6 & 7 von den ThreeTen-BackPort Projekt, das eingewickelt ist, für Android durch die ThreeTenABP Projekt.
Betrachten Sie die beiden Teile des input separat. Der eine ist ein Graf von Epoche in Millisekunden, die andere eine offset von UTC.
Vorausgesetzt, die Quelle der gleichen Epoche wie java.mal (das erste moment der 1970 in UTC), die wir verwenden können, die zum instanziieren eines
Instant
Objekt. EinInstant
einen moment auf der Zeitachse,UTC.Als Nächstes werden wir analysieren den offset von UTC. Der trick hier ist, dass wir nicht wissen, die Absicht der Quelle. Vielleicht haben Sie gemeint das beabsichtigte Datum und Uhrzeit ist eine Stunde hinter UTC-Zeit und so sollten wir Folgen, offset, text als Formel, hinzufügen von einer Stunde zur UTC. Oder meinten Sie die angezeigte Zeit eine Stunde vor von UTC. Die Häufig verwendete ISO 8601 - standard definiert die letztere, so werden wir das nutzen. Aber Sie wirklich sollte untersuchen, die Absicht Ihrer Datenquelle.
Kombinieren wir die
Instant
und dieZoneOffset
um eineOffsetDateTime
.Dump in die Konsole.