Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Dates CET et CEST

2 réponses
Avatar
Christophe Puaud
Bonjour,

j'ai fait deux méthodes pour obtenir une différence de date en jour et les
deux plantent de la même manière :
1) long nbMilliJour = 1000 * 60 * 60 * 24; //nb de millisecondes dans
une journée
return (int) ( ( pDate1.getTime( )+1 - pDate2.getTime( ) ) /
nbMilliJour );
2) long nbMilliJour = 1000 * 60 * 60 * 24; //nb de millisecondes dans
une journée
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();

cal1.setTime(pDate1);
cal2.setTime(pDate2);
cal1.set(Calendar.HOUR_OF_DAY,0);
cal1.set(Calendar.MINUTE,0);
cal1.set(Calendar.SECOND,0);
cal1.set(Calendar.MILLISECOND,0);
cal2.set(Calendar.HOUR_OF_DAY,0);
cal2.set(Calendar.MINUTE,0);
cal2.set(Calendar.SECOND,0);
cal2.set(Calendar.MILLISECOND,0);

return (int)((cal1.getTime().getTime() -
cal2.getTime().getTime()+1000000) / nbMilliJour);

Lorsque je fait un System.out.println(pDate1+ " : diff="<resultat>);
(pDate2 est toujours égal au 16/02/2004)
j'obtient :
Fri Mar 26 00:00:00 CET 2004 : diff=39
Sat Mar 27 00:00:00 CET 2004 : diff=40
Sun Mar 28 00:00:00 CET 2004 : diff=41
Mon Mar 29 00:00:00 CEST 2004 : diff=41
Tue Mar 30 00:00:00 CEST 2004 : diff=42

Le format de date change donc au 29/03 et ma différence n'est pas bonne (il
manque un jour). Comment faire ?

2 réponses

Avatar
Christophe Puaud
Erreurs : il n'y pas de +1 dans la première méthode ni de +1000000 dans la
deuxième ! (c'était un test à la con...)

"Christophe Puaud" a écrit dans le message
de news:crgd88$dr$
Bonjour,

j'ai fait deux méthodes pour obtenir une différence de date en jour et les
deux plantent de la même manière :
1) long nbMilliJour = 1000 * 60 * 60 * 24; //nb de millisecondes dans
une journée
return (int) ( ( pDate1.getTime( ) - pDate2.getTime( ) ) /
nbMilliJour );
2) long nbMilliJour = 1000 * 60 * 60 * 24; //nb de millisecondes dans
une journée
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();

cal1.setTime(pDate1);
cal2.setTime(pDate2);
cal1.set(Calendar.HOUR_OF_DAY,0);
cal1.set(Calendar.MINUTE,0);
cal1.set(Calendar.SECOND,0);
cal1.set(Calendar.MILLISECOND,0);
cal2.set(Calendar.HOUR_OF_DAY,0);
cal2.set(Calendar.MINUTE,0);
cal2.set(Calendar.SECOND,0);
cal2.set(Calendar.MILLISECOND,0);

return (int)((cal1.getTime().getTime() -
cal2.getTime().getTime()) / nbMilliJour);

Lorsque je fait un System.out.println(pDate1+ " : diff="<resultat>);
(pDate2 est toujours égal au 16/02/2004)
j'obtient :
Fri Mar 26 00:00:00 CET 2004 : diff9
Sat Mar 27 00:00:00 CET 2004 : diff@
Sun Mar 28 00:00:00 CET 2004 : diffA
Mon Mar 29 00:00:00 CEST 2004 : diffA
Tue Mar 30 00:00:00 CEST 2004 : diffB

Le format de date change donc au 29/03 et ma différence n'est pas bonne
(il

manque un jour). Comment faire ?




Avatar
Christophe Puaud
On vient de me fournir une réponse, il faut ajouter :
cal1.setTimeZone(new java.util.SimpleTimeZone(0, "TS"));
cal2.setTimeZone(new java.util.SimpleTimeZone(0, "TS"));

Le changement de format persiste mais la différence est bonne !
Sun Mar 28 00:00:00 CET 2004 : diffA
Mon Mar 29 00:00:00 CEST 2004 : diffB