Décalage heure locale / heure GMT

vava - 26 mars 2001 à 19:36
 lulu - 5 juin 2001 à 19:11
Est-il possible avec VB de récupérer le décalage de l'heure local avec l'heure GMT (en france + 1h en été et + 2h en hiver) ?
Merci de votre aide.

1 réponse

récupérer le décalage de l'heure local avec l'heure GMT :

principe de base :
Standard Time=GMT-Bias-StandardBias -> heure d'hiver
Daylight Saving Time=GMT-Bias-DaylightBias -> heure d'été

ensuite, en registres sous les clés...selon l'OS (Win9x ou Win NT)
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\
ou
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Time Zones\
on trouve les entrées correspondantes à tous les Fuseaux horaires (TZI = Time Zone Information)enregistrés sur la machine.
le binaire TZI est stocké sous forme de donnée structurée TIME_ZONE_INFORMATION :
Public Type TIME_ZONE_INFORMATION
Bias As Long
StandardName(0 To 63) As Byte 'unicode
StandardDate As SYSTEMTIME
StandardBias As Long
DaylightName(0 To 63) As Byte 'unicode
DaylightDate As SYSTEMTIME
DaylightBias As Long
End Type
Pour lire les informations , utiliser l'API:
Public Declare Function GetTimeZoneInformation Lib "kernel32" (lpTimeZoneInformation As TIME_ZONE_INFORMATION) As Long
qui fournit les information sur la TZI courante.
pour changer la TZI courante, utiliser l'API:
Public Declare Function SetTimeZoneInformation Lib "kernel32" (lpTimeZoneInformation As TIME_ZONE_INFORMATION) As Long
en se débrouillant bien, on peut donc lire les caractéristiques du TZI courant, et par rapport à la date(jj/mm/aaaa), déduitre si l'on se trouve dans l'intervalle Standard Time ou DayLight Time.
puis appliquer le calcul ennoncé en début :
Standard Time=GMT-Bias-StandardBias -> heure d'hiver
Daylight Saving Time=GMT-Bias-DaylightBias -> heure d'été

remarque : Je suis actuellement en train de développer un truc qui marche quelque soit le fuseau horaire pour OS NT.
car il faut savoir que tout ne marche pas de la même façon entre win9x et WinNT.
0