J'essaie de changer la zone horaire à l'aide de la variable
d'environnement "TZ", mais je n'arrive pas à avoir les bons changements
été-hiver pour l'Europe.
J'utilise Windows XP sp3 et visual C++ .Net 2002.
J'ai trouvé ces valeurs sur grâce à google "TZ=MET-1METDST" ou
"TZ=MEZ-1MESZ". Je les ai testées (_putenv,_tzset,_localtime64), cela
fonctionne à peu près.
Mais le changement hiver-été se fait le premier dimanche d'avril au lieu
du dernier dimanche de mars.
Quelle doit être la valeur de TZ pour avoir les changements hiver-été
actuels de l'Europe (Paris) ?
Et si en plus vous pouviez me donner la valeur pour l'Australie (Sydney)..
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-Claude BELLAMY
"Jean-Marc Lienher" a écrit dans le message de groupe de discussion : 7128b$4bfb9a48$50532d57$
Hello,
J'essaie de changer la zone horaire à l'aide de la variable d'environnement "TZ", mais je n'arrive pas à avoir les bons changements été-hiver pour l'Europe.
J'utilise Windows XP sp3 et visual C++ .Net 2002.
J'ai trouvé ces valeurs sur grâce à google "TZ=MET-1METDST" ou "TZ=MEZ-1MESZ". Je les ai testées (_putenv,_tzset,_localtime64), cela fonctionne à peu près. Mais le changement hiver-été se fait le premier dimanche d'avril au lieu du dernier dimanche de mars.
Quelle doit être la valeur de TZ pour avoir les changements hiver-été actuels de l'Europe (Paris) ? Et si en plus vous pouviez me donner la valeur pour l'Australie (Sydney)..
Depuis W2k (sous NT4 c'est plus réduit) les paramètres d'heure sont stockés ici :
L'activation du système d'heure d'été est stocké dans l'entrée "DisableAutoDaylightTimeSet" de type REG_WORD valeur : 0x1 -> observation d'heure d'été non appliquée 0x0 (ou absente) -> observation d'heure d'été appliquée
En ce qui concerne la définition des mois de changement d'heure, c'est stocké dans les entrées : "StandardStart" et "DaylightStart". Elles sont de type REG_BINARY, et contiennent 16 octets, qui représentent une structure "SYSTEMTIME" :
typedef struct _SYSTEMTIME { WORD wYear; WORD wMonth; WORD wDayOfWeek; WORD wDay; WORD wHour; WORD wMinute; WORD wSecond; WORD wMilliseconds; } SYSTEMTIME, *PSYSTEMTIME;
Le n° de mois de changement d'heure est stocké dans le 3ème octet (= octet de poids faible du champ wMonth)
- heure d'hiver : "StandardStart" -> 3ème octet = 0x0A (= actuellement octobre en Europe)
Les valeurs de ces paramètres (0x03, 0x0A) sont stockées dans la clef HKLMSOFTWAREMicrosoftWindows NTCurrentVersionTime Zonesxxxxxxx
Avec, pour l'Europe occidentale, xxxxx = "Romance Standard Time" L'entrée contenant les valeurs numériques s'appelle "TZI" et est de type REG_BINARY (à partir de l'offset 0x0C)
Pour l'Australie, il y a plusieurs clefs vu l'étendue du pays :
"W. Australia Standard Time" (UTC+08:00) Perth
"Cen. Australia Standard Time" (UTC+09:30) Adélaïde NB: dans d'autres versions de Windows, on trouve : "AUS Central Standard Time" "Darwin" à la place d'Adélaïde
"E. Australia Standard Time" (UTC+10:00) Brisbane NB: dans d'autres versions, on trouve : "AUS Eastern Standard Time" "Canberra, Melbourne, Sydney" à la place de Brisbane
J'ai remarqué qu'en ce qui concerne l'Australie Ouest et Centre (mais pas Est), il y a une sous-clef supplémentaire "Dynamic DST", qui contient un nombre variable d'entrées : "FirstEntry", "Lastentry" (REG_DWORD) dont les valeurs respectives pointent vers d'autres entrées qui sont des n° d'années (2005, 2006, ...2010) (REG_BINARY)
En ce qui concerne l'heure de passage à l'heure d'été ou d'hiver, suivant la version de Windows, je ne trouve pas la correspondance dans "TimeZoneInformation".
En effet, (http://www.industrie.gouv.fr/energie/developp/econo/textes/se_heur.htm) "depuis 1998 pour l'ensemble des pays de l'Union Européenne, le passage à l'heure d'été intervient le dernier dimanche de mars à 2 heures du matin et le passage à l'heure d'hiver intervient le dernier dimanche d'octobre à 3 heures du matin."
On retrouve bien : la valeur 0x02 dans DaylightStart la valeur 0x03 dans StandardStart mais PAS AU BON ENDROIT ! D'après la structure SYSTEMTIME, ce devrait être au 9ème octet, or c'est au 7ème dans la BDR Un mystère microsoftien !!! ;+)
Pour info, il y a eu des patchs concernat les changements de DST en 2008 : http://support.microsoft.com/gp/dst_topissues#DST_and_TZ_changes (je n'ai pas lu en détail)
Et j'ai vu qu'il était question d'un correctif pour l'Australie Ouest : http://support.microsoft.com/kb/914387/en-us (en anglais) http://support.microsoft.com/kb/914387/ (en français)
-- May the Force be with You! La Connaissance s'accroît quand on la partage ---------------------------------------------------------- Jean-Claude BELLAMY [MVP] http://www.bellamyjc.org ou http://jc.bellamy.free.fr
"Jean-Marc Lienher" <jean-marc.lienher@bluewin.ch> a écrit dans le message
de groupe de discussion : 7128b$4bfb9a48$50532d57$27216@news.hispeed.ch...
Hello,
J'essaie de changer la zone horaire à l'aide de la variable
d'environnement "TZ", mais je n'arrive pas à avoir les bons changements
été-hiver pour l'Europe.
J'utilise Windows XP sp3 et visual C++ .Net 2002.
J'ai trouvé ces valeurs sur grâce à google "TZ=MET-1METDST" ou
"TZ=MEZ-1MESZ". Je les ai testées (_putenv,_tzset,_localtime64), cela
fonctionne à peu près.
Mais le changement hiver-été se fait le premier dimanche d'avril au lieu
du dernier dimanche de mars.
Quelle doit être la valeur de TZ pour avoir les changements hiver-été
actuels de l'Europe (Paris) ?
Et si en plus vous pouviez me donner la valeur pour l'Australie (Sydney)..
Depuis W2k (sous NT4 c'est plus réduit) les paramètres d'heure sont stockés
ici :
L'activation du système d'heure d'été est stocké dans l'entrée
"DisableAutoDaylightTimeSet"
de type REG_WORD
valeur :
0x1 -> observation d'heure d'été non appliquée
0x0 (ou absente) -> observation d'heure d'été appliquée
En ce qui concerne la définition des mois de changement d'heure, c'est
stocké dans les entrées :
"StandardStart"
et
"DaylightStart".
Elles sont de type REG_BINARY, et contiennent 16 octets, qui représentent
une structure "SYSTEMTIME" :
typedef struct _SYSTEMTIME {
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} SYSTEMTIME, *PSYSTEMTIME;
Le n° de mois de changement d'heure est stocké dans le 3ème octet
(= octet de poids faible du champ wMonth)
- heure d'hiver :
"StandardStart"
-> 3ème octet = 0x0A (= actuellement octobre en Europe)
Les valeurs de ces paramètres (0x03, 0x0A) sont stockées dans la clef
HKLMSOFTWAREMicrosoftWindows NTCurrentVersionTime Zonesxxxxxxx
Avec, pour l'Europe occidentale, xxxxx = "Romance Standard Time"
L'entrée contenant les valeurs numériques s'appelle
"TZI"
et est de type REG_BINARY (à partir de l'offset 0x0C)
Pour l'Australie, il y a plusieurs clefs vu l'étendue du pays :
"W. Australia Standard Time"
(UTC+08:00) Perth
"Cen. Australia Standard Time"
(UTC+09:30) Adélaïde
NB: dans d'autres versions de Windows, on trouve :
"AUS Central Standard Time"
"Darwin" à la place d'Adélaïde
"E. Australia Standard Time"
(UTC+10:00) Brisbane
NB: dans d'autres versions, on trouve :
"AUS Eastern Standard Time"
"Canberra, Melbourne, Sydney" à la place de Brisbane
J'ai remarqué qu'en ce qui concerne l'Australie Ouest et Centre (mais pas
Est), il y a une sous-clef supplémentaire "Dynamic DST", qui contient un
nombre variable d'entrées : "FirstEntry", "Lastentry" (REG_DWORD) dont les
valeurs respectives pointent vers d'autres entrées qui sont des n° d'années
(2005, 2006, ...2010) (REG_BINARY)
En ce qui concerne l'heure de passage à l'heure d'été ou d'hiver, suivant la
version de Windows, je ne trouve pas la correspondance dans
"TimeZoneInformation".
En effet,
(http://www.industrie.gouv.fr/energie/developp/econo/textes/se_heur.htm)
"depuis 1998 pour l'ensemble des pays de l'Union
Européenne, le passage à l'heure d'été intervient
le dernier dimanche de mars à 2 heures du matin
et le passage à l'heure d'hiver intervient le dernier
dimanche d'octobre à 3 heures du matin."
On retrouve bien :
la valeur 0x02 dans DaylightStart
la valeur 0x03 dans StandardStart
mais PAS AU BON ENDROIT !
D'après la structure SYSTEMTIME, ce devrait être au 9ème octet, or c'est au
7ème dans la BDR
Un mystère microsoftien !!! ;+)
Pour info, il y a eu des patchs concernat les changements de DST en 2008 :
http://support.microsoft.com/gp/dst_topissues#DST_and_TZ_changes
(je n'ai pas lu en détail)
Et j'ai vu qu'il était question d'un correctif pour l'Australie Ouest :
http://support.microsoft.com/kb/914387/en-us (en anglais)
http://support.microsoft.com/kb/914387/ (en français)
--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP]
http://www.bellamyjc.org ou http://jc.bellamy.free.fr
"Jean-Marc Lienher" a écrit dans le message de groupe de discussion : 7128b$4bfb9a48$50532d57$
Hello,
J'essaie de changer la zone horaire à l'aide de la variable d'environnement "TZ", mais je n'arrive pas à avoir les bons changements été-hiver pour l'Europe.
J'utilise Windows XP sp3 et visual C++ .Net 2002.
J'ai trouvé ces valeurs sur grâce à google "TZ=MET-1METDST" ou "TZ=MEZ-1MESZ". Je les ai testées (_putenv,_tzset,_localtime64), cela fonctionne à peu près. Mais le changement hiver-été se fait le premier dimanche d'avril au lieu du dernier dimanche de mars.
Quelle doit être la valeur de TZ pour avoir les changements hiver-été actuels de l'Europe (Paris) ? Et si en plus vous pouviez me donner la valeur pour l'Australie (Sydney)..
Depuis W2k (sous NT4 c'est plus réduit) les paramètres d'heure sont stockés ici :
L'activation du système d'heure d'été est stocké dans l'entrée "DisableAutoDaylightTimeSet" de type REG_WORD valeur : 0x1 -> observation d'heure d'été non appliquée 0x0 (ou absente) -> observation d'heure d'été appliquée
En ce qui concerne la définition des mois de changement d'heure, c'est stocké dans les entrées : "StandardStart" et "DaylightStart". Elles sont de type REG_BINARY, et contiennent 16 octets, qui représentent une structure "SYSTEMTIME" :
typedef struct _SYSTEMTIME { WORD wYear; WORD wMonth; WORD wDayOfWeek; WORD wDay; WORD wHour; WORD wMinute; WORD wSecond; WORD wMilliseconds; } SYSTEMTIME, *PSYSTEMTIME;
Le n° de mois de changement d'heure est stocké dans le 3ème octet (= octet de poids faible du champ wMonth)
- heure d'hiver : "StandardStart" -> 3ème octet = 0x0A (= actuellement octobre en Europe)
Les valeurs de ces paramètres (0x03, 0x0A) sont stockées dans la clef HKLMSOFTWAREMicrosoftWindows NTCurrentVersionTime Zonesxxxxxxx
Avec, pour l'Europe occidentale, xxxxx = "Romance Standard Time" L'entrée contenant les valeurs numériques s'appelle "TZI" et est de type REG_BINARY (à partir de l'offset 0x0C)
Pour l'Australie, il y a plusieurs clefs vu l'étendue du pays :
"W. Australia Standard Time" (UTC+08:00) Perth
"Cen. Australia Standard Time" (UTC+09:30) Adélaïde NB: dans d'autres versions de Windows, on trouve : "AUS Central Standard Time" "Darwin" à la place d'Adélaïde
"E. Australia Standard Time" (UTC+10:00) Brisbane NB: dans d'autres versions, on trouve : "AUS Eastern Standard Time" "Canberra, Melbourne, Sydney" à la place de Brisbane
J'ai remarqué qu'en ce qui concerne l'Australie Ouest et Centre (mais pas Est), il y a une sous-clef supplémentaire "Dynamic DST", qui contient un nombre variable d'entrées : "FirstEntry", "Lastentry" (REG_DWORD) dont les valeurs respectives pointent vers d'autres entrées qui sont des n° d'années (2005, 2006, ...2010) (REG_BINARY)
En ce qui concerne l'heure de passage à l'heure d'été ou d'hiver, suivant la version de Windows, je ne trouve pas la correspondance dans "TimeZoneInformation".
En effet, (http://www.industrie.gouv.fr/energie/developp/econo/textes/se_heur.htm) "depuis 1998 pour l'ensemble des pays de l'Union Européenne, le passage à l'heure d'été intervient le dernier dimanche de mars à 2 heures du matin et le passage à l'heure d'hiver intervient le dernier dimanche d'octobre à 3 heures du matin."
On retrouve bien : la valeur 0x02 dans DaylightStart la valeur 0x03 dans StandardStart mais PAS AU BON ENDROIT ! D'après la structure SYSTEMTIME, ce devrait être au 9ème octet, or c'est au 7ème dans la BDR Un mystère microsoftien !!! ;+)
Pour info, il y a eu des patchs concernat les changements de DST en 2008 : http://support.microsoft.com/gp/dst_topissues#DST_and_TZ_changes (je n'ai pas lu en détail)
Et j'ai vu qu'il était question d'un correctif pour l'Australie Ouest : http://support.microsoft.com/kb/914387/en-us (en anglais) http://support.microsoft.com/kb/914387/ (en français)
-- May the Force be with You! La Connaissance s'accroît quand on la partage ---------------------------------------------------------- Jean-Claude BELLAMY [MVP] http://www.bellamyjc.org ou http://jc.bellamy.free.fr
Jean-Marc Lienher
Jean-Claude BELLAMY wrote:
"Jean-Marc Lienher" a écrit dans le
J'essaie de changer la zone horaire à l'aide de la variable d'environnement "TZ", mais je n'arrive pas à avoir les bons changements été-hiver pour l'Europe.
...
Depuis W2k (sous NT4 c'est plus réduit) les paramètres d'heure sont stockés ici :
J'ai refait une recherche sur google en avec ces infos et j'ai trouvé cette page qui propose un programme C++ qui change de timezone en utilisant la base de registre : http://www.codeproject.com/KB/cpp/cppchangetimezone.aspx
Je l'ai modifié et je suis arrivé à mes fins. Ca marche !!!
Merci encore.
Jean-Claude BELLAMY wrote:
"Jean-Marc Lienher" <jean-marc.lienher@bluewin.ch> a écrit dans le
J'essaie de changer la zone horaire à l'aide de la variable
d'environnement "TZ", mais je n'arrive pas à avoir les bons
changements été-hiver pour l'Europe.
...
Depuis W2k (sous NT4 c'est plus réduit) les paramètres d'heure sont
stockés ici :
J'ai refait une recherche sur google en avec ces infos et j'ai
trouvé cette page qui propose un programme C++ qui change de timezone en
utilisant la base de registre :
http://www.codeproject.com/KB/cpp/cppchangetimezone.aspx
Je l'ai modifié et je suis arrivé à mes fins. Ca marche !!!
J'essaie de changer la zone horaire à l'aide de la variable d'environnement "TZ", mais je n'arrive pas à avoir les bons changements été-hiver pour l'Europe.
...
Depuis W2k (sous NT4 c'est plus réduit) les paramètres d'heure sont stockés ici :
J'ai refait une recherche sur google en avec ces infos et j'ai trouvé cette page qui propose un programme C++ qui change de timezone en utilisant la base de registre : http://www.codeproject.com/KB/cpp/cppchangetimezone.aspx
Je l'ai modifié et je suis arrivé à mes fins. Ca marche !!!