Функция _Date_Time_GetTimeZoneInformation

         Описание функции


_Date_Time_GetTimeZoneInformation

Возвращает текущие настройки часового пояса

#include <Date.au3>
_Date_Time_GetTimeZoneInformation()

Возвращаемое значение

Возвращает массив следующего формата:
    [0] - Установки летнего времени. Может быть одним из следующих значений:
    -1 - Ошибка
    0 - Переход на летнее время не используется в текущем часовом поясе
    1 - Переход на летнее время соответствует стандартному времени
    2 - Переход на летнее время с переводом часов
    [1] - Текущее смещение для локального времени на данном компьютере. Смещение - это разница в минутах между UTC и локальным временем. Все переводы между UTC и локальным временем производятся согласно формуле: UTC = локальное время + смещение
    [2] - Описание для стандартного времени
    [3] - Структура $tagSYSTEMTIME, содержащая дату и локальное время, когда происходит переход летнего времени на стандартное.
    [4] - Значение смещения, используемое при переводе локального времени в стандартное. Это значение добавляется к значению смещения, используемого при формировании стандартного времени. В большинстве часовых поясов это значение равно нулю.
    [5] - Описание для летнего времени
    [6] - Структура $tagSYSTEMTIME, содержащая дату и локальное время, когда происходит переход со стандартного времени на летнее.
    [7] - Значение смещения, которое будет использовано при переводе локального времени на летнее время. Это значение добавляется к значению смещения, формирующего смещение для летнего времени. В большинстве часовых поясов это значение равно –60.

Примечания

В структуре $tagSYSTEMTIME wHour и wMinute представляют переходное время, wDayOfWeek соответствующую неделю, а wDay указывает день недели в течение месяца (от 1 до 5, где 5 означает последний день в месяце, если этот день недели встречается менее пяти раз).

Используя эти обозначения, укажем 02:00 первого воскресенья в апреле таким образом: wHour = 2, wMonth = 4, wDayOfWeek = 0, wDay = 1. Укажем 02:00 в последний четверг октября таким образом: wHour = 2, wMonth = 10, wDayOfWeek = 4, wDay = 5.

UTC - "Всемирное координированное время", подробно смотрите в Википедии

См. также

_Date_Time_SetTimeZoneInformation, $tagSYSTEMTIME

Пример

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

; Под Vist-ой Windows API "SetTimeZoneInformation" может не выполняться из-за параметров безопасности

Global $iMemo

_Main()

Func _Main()
    Local $hGUI, $aOld, $aNew

    ; Создаёт GUI
    $hGUI = GUICreate("Время", 400, 300)
    $iMemo = GUICtrlCreateEdit("", 2, 2, 396, 296, $WS_VSCROLL)
    GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
    GUISetState()

    ; Показывает информацию о текущем часовом поясе
    $aOld = _Date_Time_GetTimeZoneInformation ()
    ShowTimeZoneInformation($aOld,"Текущий")

    ; Устанавливает информацию о новом часовом поясе
    If Not _Date_Time_SetTimeZoneInformation ($aOld[1], "A3L CST", $aOld[3], $aOld[4], "A3L CDT", $aOld[6], $aOld[7]) Then
        MsgBox(4096, "Ошибка", "Системный часовой пояс не может быть установлен" & @CRLF & @CRLF & _WinAPI_GetLastErrorMessage())
        Exit
    EndIf

    ; Показывает информацию о новом часовом поясе
    $aNew = _Date_Time_GetTimeZoneInformation ()
    ShowTimeZoneInformation($aNew, "Новый")

    ; Сброс информации о часовом поясе на настоящий
    _Date_Time_SetTimeZoneInformation ($aOld[1], $aOld[2], $aOld[3], $aOld[4], $aOld[5], $aOld[6], $aOld[7])

    ; Показывает информацию о текущем часовом поясе
    $aOld = _Date_Time_GetTimeZoneInformation ()
    ShowTimeZoneInformation($aOld, "Сброс")

    ; Цикл выполняется, пока окно не будет закрыто
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

EndFunc   ;==>_Main

; Записывает строку в элемент для заметок
Func MemoWrite($sMessage)
    GUICtrlSetData($iMemo, $sMessage & @CRLF, 1)
EndFunc   ;==>MemoWrite

; Показывает информацию о часовом поясе
Func ShowTimeZoneInformation(ByRef $aInfo, $comment)
    MemoWrite("******************* " & $comment & " *******************")
    MemoWrite("Результат ...................: " & $aInfo[0])
    MemoWrite("Текущее смещение ............: " & $aInfo[1])
    MemoWrite("Название стандарта ..........: " & $aInfo[2])
    MemoWrite("Дата/время стандарта ........: " & _Date_Time_SystemTimeToDateTimeStr ($aInfo[3]))
    MemoWrite("Смещение стандарта ..........: " & $aInfo[4])
    MemoWrite("Название летнего перехода ...: " & $aInfo[5])
    MemoWrite("Дата/время летнего перехода .: " & _Date_Time_SystemTimeToDateTimeStr ($aInfo[6]))
    MemoWrite("Смещение летнего перехода ...: " & $aInfo[7])
EndFunc   ;==>ShowTimeZoneInformation