Jouez avec les dates en Java

Publié le par seekaftersomething.over-blog.com


Après m'être pris la tête sur les dates en java, je me suis dit que je devais écrire un article pour que toute cette recherche ne soit pas perdue.


On va prendre l'exemple suivant.

 // Calendar sur le fuseau de Paris
Calendar cal = GregorianCalendar.getInstance();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm");

cal.set(2010, 2, 27);
cal.set(Calendar.HOUR_OF_DAY, 1);
cal.set(Calendar.MINUTE, 30);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);

// heure de New York
formatter.setTimeZone(TimeZone.getTimeZone("EST"));

System.out.println(formatter.format(cal.getTime()));

cal.add(Calendar.HOUR_OF_DAY, 1);
System.out.println(formatter.format(cal.getTime()));

cal.add(Calendar.HOUR_OF_DAY, 1);
System.out.println(formatter.format(cal.getTime()));

cal.add(Calendar.HOUR_OF_DAY, 1);
System.out.println(formatter.format(cal.getTime()));

Et bien, dans cet exemple le Calendar est mis au 27 mars 2010 à 1h30 et on ajoute 3 fois une heure.
Donc on devrait avoir :
2010-03-27 01:30
2010-03-27 02:30
2010-03-27 03:30
2010-03-27 04:30

Et bien non, le SimpleDateFormat est sur le fuseau horaire de New York ( -6 heures) et convertit tout seul les heures. On a donc :

2010-03-26 19:30
2010-03-26 20:30
2010-03-26 21:30
2010-03-26 22:30


Je ferai un deuxième article concernant le changement d'heure.

Publié dans Java

Commenter cet article