UDF > Date >


_Date_Time_GetTimeZoneInformation

Obtient les paramètres du fuseau horaire actuel

#include <Date.au3>
_Date_Time_GetTimeZoneInformation ( )

Valeur de retour

Retourne un tableau (array) au format suivant:
[0] - Paramètre d'heure d'été. Peut être un des suivants :
  -1 - Échec
   0 - L'heure d'été n'est pas utilisée avec le fuseau horaire courant
   1 - L'heure d'été fonctionne comme l'heure normale
   2 - L'heure d'été fonctionne pendant l'été

[1] - Le décalage en cours pour la conversion de l'heure locale sur cet ordinateur.
Le décalage est la différence en minutes entre le temps universel coordonné (UTC) et l'heure locale.
Toutes les conversions entre l'heure UTC et l'heure locale utilisent la formule suivante: UTC = heure locale + décalage

[2] - La description pour l'heure d'hiver.

[3] - Une structure $tagSYSTEMTIME qui contient les date et heure locales lorsque le passage de l'heure d'été à heure d'hiver se produit.

[4] - La valeur du décalage à utiliser lors du changement d'heure locale qui se produit pendant l'heure d'hiver.
Cette valeur est ajoutée à la valeur du décalage pour former le décalage utilisé pendant l'heure d'hiver.
Dans la plupart des fuseaux horaires, cette valeur est zéro.

[5] - La description pour l'heure d'été

[6] - Une structure $tagSYSTEMTIME qui contient les date et heure locales lorsque le passage de l'heure d'hiver à l'heure d'été se produit.

[7] - La valeur de décalage à utiliser lors du changement d'heure locale qui se produit pendant l'heure d'été.
Cette valeur est ajoutée à la valeur du décalage pour former le décalage utilisé pendant l'heure d'été. Dans la plupart des fuseaux horaires cette valeur est -60.

Remarques

Dans la structure $tagSYSTEMTIME, les membres wHour et wMinute représentent le changement d'heure, le membre wDayOfWeek du jour de la semaine correspondant, et le membre wDay indiquant l'occurence du jour de la semaine dans le mois (1 à 5, où 5 indique l'occurrence finale au cours du mois si ce jour de la semaine ne répète pas 5 fois).

En utilisant cette notation, indiquez 02:00 pour le premier dimanche d'avril, comme suit: wHour = 2, wMonth = 4, wDayOfWeek = 0, wDay = 1. Indiquez 02:00 pour le dernier jeudi d'octobre comme suit: wHour = 2, wMonth = 10, wDayOfWeek = 4, wDay = 5.

En relation

$tagSYSTEMTIME, _Date_Time_SetTimeZoneInformation

Exemple

;~ #RequireAdmin
; L'API Windows "SetTimeZoneInformation" nécessite "SeTimeZonePrivilege" aussi vous devez utiliser #RequireAdmin

#include <Date.au3>
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIError.au3>
#include <WindowsConstants.au3>

Global $g_idMemo

Example()

Func Example()
    Local $aOld, $aNew

    ; Crée la GUI
    GUICreate("Temps", 400, 300)
    $g_idMemo = GUICtrlCreateEdit("", 2, 2, 396, 296, $WS_VSCROLL)
    GUICtrlSetFont($g_idMemo, 9, 400, 0, "Courier New")
    GUISetState(@SW_SHOW)

    ; Affiche les informations de fuseau horaire actuel
    $aOld = _Date_Time_GetTimeZoneInformation()
    ShowTimeZoneInformation($aOld, "Actuel")

    ; Définit les nouvelles informations de fuseau horaire
    If Not _Date_Time_SetTimeZoneInformation($aOld[1], "A3L CST", $aOld[3], $aOld[4], "A3L CDT", $aOld[6], $aOld[7]) Then
        MsgBox($MB_SYSTEMMODAL, "Erreur", "Impossible de définir le fuseau horaire système" & @CRLF & @CRLF & _WinAPI_GetErrorMessage(@extended))
        Exit
    EndIf

    ; Affiche les nouvelles informations de fuseau horaire
    $aNew = _Date_Time_GetTimeZoneInformation()
    ShowTimeZoneInformation($aNew, "New")

    ; Réinitialise les informations de fuseau horaire d'origine
    _Date_Time_SetTimeZoneInformation($aOld[1], $aOld[2], $aOld[3], $aOld[4], $aOld[5], $aOld[6], $aOld[7])

    ; Affiche les informations de fuseau horaire actuel
    $aOld = _Date_Time_GetTimeZoneInformation()
    ShowTimeZoneInformation($aOld, "Reset")

    ; Boucle jusqu'à ce que l'utilisateur quitte.
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
EndFunc   ;==>Example

; Écrit une ligne dans le contrôle mémo
Func MemoWrite($sMessage)
    GUICtrlSetData($g_idMemo, $sMessage & @CRLF, 1)
EndFunc   ;==>MemoWrite

; Affiche les informations de fuseau horaire
Func ShowTimeZoneInformation(ByRef $aInfo, $sComment)
    MemoWrite("***************************** " & $sComment & " *****************************")
    MemoWrite("Résultat..................... : " & $aInfo[0])
    MemoWrite("Décalage actuel.............. : " & $aInfo[1])
    MemoWrite("Nom standard................. : " & $aInfo[2])
    MemoWrite("Date/heure standard.......... : " & _Date_Time_SystemTimeToDateTimeStr($aInfo[3]))
    MemoWrite("Décalage standard............ : " & $aInfo[4])
    MemoWrite("Nom pour l'heure d'été....... : " & $aInfo[5])
    MemoWrite("Date/heure pour l'heure d'été : " & _Date_Time_SystemTimeToDateTimeStr($aInfo[6]))
    MemoWrite("Décalage pour l'heure d'été.. : " & $aInfo[7])
EndFunc   ;==>ShowTimeZoneInformation