1 votes

La différence de date inclut le décalage de fuseau horaire, qu'est-ce qui ne va pas ?

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
 }

Lorsque j'obtiens la différence, elle inclut le fuseau horaire. Je sais que l'objet Date est en interne UTC.

Qu'est-ce qui ne va pas ?

3voto

Jon Skeet Points 692016

Alors qu'un Date est bien en UTC, votre SimpleDateFormat peut ne pas l'être. Je soupçonne que le fuseau horaire par défaut est celui du système - c'est en tout cas ce que l'expérience suggère. Vous pouvez le modifier en utilisant DateFormat.setTimeZone . Par conséquent, si votre texte représente une date/heure UTC, vous devez également définir le fuseau horaire du formateur sur UTC.

Vous pouvez également utiliser Joda Time qui est généralement une meilleure API pour la date et l'heure :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X