différence de date comprend décalage horaire, ce qui ne va pas?
-
01-10-2019 - |
Question
J'ai ce 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
}
Quand je reçois la diff, il comprend le fuseau horaire. Je sais que l'objet de la date est interne UTC.
Alors qu'est-ce qui ne va pas ici?
La solution
Alors qu'un objet Date
est en effet UTC, votre SimpleDateFormat
peut ne pas être. Je soupçonne que ce défaut de l'heure du système zone - qui est certainement ce que suggère l'expérimentation. Vous pouvez modifier ce paramètre DateFormat.setTimeZone
. Donc, si votre texte représente une date UTC / heure, vous devez définir le fuseau horaire de l'UTC à formatter ainsi.
Ou vous pouvez utiliser Joda temps , qui est une API de date et l'heure généralement mieux:)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow