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


_Date_Time_SetTimeZoneInformation

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

#include <Date.au3>
_Date_Time_SetTimeZoneInformation($iBias, $sStdName, $tStdDate, $iStdBias, $sDayName, $tDayDate, $iDayBias)

Параметры

$iBias Текущее смещение для локального перевода времени этого компьютера. Смещение - это разница в минутах между UTC и локальным временем. Все переводы между UTC и локальным временем производятся согласно формуле: UTC = локальное время + смещение
$sStdName Описание для стандартного времени
$tStdDate Структура $tagSYSTEMTIME, содержащая дату и локальное время, когда происходит переход летнего времени на стандартное.
$iStdBias Значение смещения, используемое при переводе локального времени в стандартное. Это значение добавляется к значению смещения, используемого при формировании стандартного времени. В большинстве часовых поясов это значение равно нулю.
$sDayName Описание для летнего времени
$tDayDate Структура $tagSYSTEMTIME, содержащая дату и локальное время, когда происходит переход со стандартного времени на летнее.
$iDayBias Значение смещения, которое будет использовано при переводе локального времени на летнее время. Это значение добавляется к значению смещения, формирующего смещение для летнего времени. В большинстве часовых поясов это значение равно –60.

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

Успех:Возвращает True
Ошибка:Возвращает False

Примечания

Для выбора правильного дня в месяце, установите wYear равным нулю, 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_GetTimeZoneInformation, $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