Problème de Daylight Saving Time Java Linux/Windows

Pàgina inicial

Reply to this message
Autor: ymartin59
Data:  
A: Guilde ML
Assumpte: Problème de Daylight Saving Time Java Linux/Windows
Bonjour,

J'ai un cas tordu à vous soumettre.
Voici le contexte: une application client/serveur à base du framework Java ULC Canoo.
Le client tourne sous forme d'Applet dans un navigateur - supposé IE/Windows pour l'instant.
Le serveur tourne dans WebSphere 6.1 sur RedHat 5.3 en timezone Europe/Zurich.

En saisissant la date de naissance 19.04.1941 (heure à 00:00) dans un champ "Date" ULC, le serveur reçoit 18.04.1941 23:00.

Après recherche dans la documentation ULC Canoo s'occupe de convertir la chaîne saisie en temps local puis en temps GMT pour envoi au serveur - le serveur faisant l'opération inverse.

En faisant un petit code de test en Java que l'on exécute tantôt sur Linux, tantôt sur Windows, on remarque que le DST (Daylight Saving Time) n'est pas identique pour cette date !

SimpleDateFormat df = new SimpleDateFormat("dd.MM.yyyy");
Date currentDate = df.parse("19.04.1941");
System.out.println("Date        : " + currentDate);
TimeZone tz = TimeZone.getDefault();
System.out.println("TimeZone    : " + tz.toString());
System.out.println("TimeZone tested : " + tz.getDisplayName(tz.inDaylightTime(currentDate), TimeZone.LONG));
boolean indaylight = tz.inDaylightTime(currentDate);
System.out.println("Your tested time is " + (indaylight ? "in " : "not in ")  + "daylight-savings time.");


Sous Linux, cette date n'est pas en DST, sous Windows, OUI.

J'ai utilisé "zdump -v /etc/localtime | grep 1941" pour en savoir plus côté Linux, mais pour Windows c'est plutôt obscure.

Est-ce que vous avez une explication sur ce qui se passe ?

Merci d'avance
Yves Martin