Datum Differenz beinhaltet Zeitzone Offset, was falsch ist?
-
01-10-2019 - |
Frage
Ich habe diesen Code:
Date now = new Date();
// the string is in UTC format, so a UTC date must be constructed, I don't know if that happens in this format
Date measure = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(utcDateTime);
long diff = now.getTime() - measure.getTime();
if (diff < 1000* 60 * 15) {
// measure is less then 15 minutes recent
do some work
}
Wenn ich das diff bekommen, enthält es die Zeitzone. Ich weiß, dass das Date-Objekt intern ist UTC.
Also, was ist los hier?
Lösung
Während ein Date
Objekt in der Tat in UTC ist, Ihre SimpleDateFormat
kann nicht sein. Ich vermute, es ist auf die Systemzeitzone Standard - das ist sicherlich was Experimente vorschlagen würde. Sie können diese mit DateFormat.setTimeZone
ändern. Also, wenn Sie Ihren Text ein UTC-Datum / Zeit darstellt, sollten Sie die Zeitzone des Formatierer UTC als auch gesetzt.
Oder Sie könnten benutzen Joda Zeit , die eine allgemein bessere Datum und Uhrzeit API ist:)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow