Ich erzeuge etwas UTC-Zeit auf meinem Backend und sende es an meine Android-Anwendung mit websockets.Falsche Zeitzoneninformationen mit Java JodaTime
Das Problem ist: wenn ich das Datum anzeigen, ist es um 3 Stunden zurück, was ist, weil ich nehme an, dass mein Telefon in der +3 Zeitzone ist.
Unten finden Sie einen Auszug aus dem Backend-Code und dem Android-Code.
Backend-Code (das ist, wie ich das UTC-Datum am Erzeugen der Moment-Bibliothek):
let d = moment.utc().toISOString();
In meiner Applikation für Android das ist, wie ich es bin Handhabung:
String sendDate = "2017-04-19T15:41:36.758Z"; //this is an example server response
DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
dtf.parseLocalDateTime(sendDate).toDate()
Das Problem ist, dass das UTC-Datum nicht richtig in der Zeitzone angezeigt/konvertiert wird, in der sich das Telefon gerade befindet, so dass das Datum immer um 3 Stunden zurückliegt.
Was fehlt mir?
Haben Sie überprüft die Standard-Telefon 'TimeZone' (das Ergebnis von' DateTimeZone.getDefault() ')? –
Und was ist die Ausgabe, die Sie gegen die erwartete Ausgabe bekommen? –
Versuchen Sie 'dtf.parseLocalDateTime (sendDate) .toDate (DateTimeZone.UTC)' weil ich befürchte, dass 'toDate()' ohne Argument implizit die Systemzeitzone verwendet (mit Daten von Joda-Time). Und Ihre 'LocalDateTime' basiert offensichtlich auf UTC-Eingabe ... –