структура DYNAMIC_TIME_ZONE_INFORMATION (timezoneapi.h)
Задает параметры часового пояса и динамического летнего времени.
Синтаксис
typedef struct _TIME_DYNAMIC_ZONE_INFORMATION {
LONG Bias;
WCHAR StandardName[32];
SYSTEMTIME StandardDate;
LONG StandardBias;
WCHAR DaylightName[32];
SYSTEMTIME DaylightDate;
LONG DaylightBias;
WCHAR TimeZoneKeyName[128];
BOOLEAN DynamicDaylightTimeDisabled;
} DYNAMIC_TIME_ZONE_INFORMATION, *PDYNAMIC_TIME_ZONE_INFORMATION;
Члены
Bias
Текущее смещение для перевода локального времени на данном компьютере (в минутах). Смещение — это разница в минутах между временем в формате UTC и местным временем. Все переводы между UTC и местным временем основаны на следующей формуле:
UTC = местное время + смещение
Этот элемент является обязательным.
StandardName[32]
Описание стандартного времени. Например, "EST" может указывать на восточное стандартное время. Функция GetDynamicTimeZoneInformation возвратит строку без изменений. Эта строка может быть пустой.
StandardDate
Структура SYSTEMTIME , содержащая дату и местное время при переходе от летнего времени к стандартному времени в этой операционной системе. Если часовой пояс не поддерживает переход на летнее время или если вызывающему объекту необходимо отключить переход на летнее время, элемент wMonth в структуре SYSTEMTIME должен быть равен нулю. Если указана эта дата, необходимо также указать элемент DaylightDate этой структуры. В противном случае система предполагает, что данные часового пояса недопустимы и изменения не будут применены.
Чтобы выбрать правильный день в месяце, задайте для элемента wYear значение 0, для элементов wHour и wMinute — время перехода, для элемента wDayOfWeek — соответствующий день недели, а для элемента wDay — для обозначения вхождения дня недели в пределах месяца (от 1 до 5, где 5 — последнее событие в течение месяца, если этот день недели не наступает 5 раз).
Используя эту нотацию, укажите 02:00 в первое воскресенье апреля следующим образом: wHour = 2, wMonth = 4, wDayOfWeek = 0, wDay = 1. Укажите 02:00 в последний четверг октября следующим образом: wHour = 2, wMonth = 10, wDayOfWeek = 4, wDay = 5.
Если элемент wYear не равен нулю, дата перехода является абсолютной; Это будет происходить только один раз. В противном случае это относительная дата, которая наступает ежегодно.
StandardBias
Значение смещения, используемое при переводах по местному времени, которые выполняются в стандартное время. Этот элемент игнорируется, если не указано значение для элемента StandardDate .
Это значение добавляется к значению члена Bias , чтобы сформировать смещение, используемое в стандартное время. В большинстве часовых поясов значение этого элемента равно нулю.
DaylightName[32]
Описание летнего времени (DST). Например, "PDT" может указывать на тихоокеанское время (лето). Функция GetDynamicTimeZoneInformation возвратит строку без изменений. Эта строка может быть пустой.
DaylightDate
Структура SYSTEMTIME , содержащая дату и местное время при переходе от стандартного времени к летнему времени в этой операционной системе. Если часовой пояс не поддерживает переход на летнее время или если вызывающему объекту необходимо отключить переход на летнее время, элемент wMonth в структуре SYSTEMTIME должен быть равен нулю. Если указана эта дата, необходимо также указать элемент StandardDate в этой структуре. В противном случае система предполагает, что данные часового пояса недопустимы и изменения не будут применены.
Чтобы выбрать правильный день в месяце, задайте для элемента wYear значение 0, для элементов wHour и wMinute — время перехода, для элемента wDayOfWeek — соответствующий день недели, а для элемента wDay — для обозначения вхождения дня недели в пределах месяца (от 1 до 5, где 5 — последнее событие в течение месяца, если этот день недели не наступает 5 раз).
Если элемент wYear не равен нулю, дата перехода является абсолютной; Это будет происходить только один раз. В противном случае это относительная дата, которая наступает ежегодно.
DaylightBias
Значение смещения, используемое при переводе по местному времени в летнее время. Этот элемент игнорируется, если значение для элемента DaylightDate не указано.
Это значение добавляется к значению элемента Bias , чтобы сформировать смещение, используемое в летнее время. В большинстве часовых поясов значение этого элемента равно –60.
TimeZoneKeyName[128]
Имя раздела реестра часового пояса на локальном компьютере. Дополнительные сведения см. в подразделе "Примечания".
DynamicDaylightTimeDisabled
Указывает, отключена ли динамическая переход на летнее время. Установка для этого элемента значения TRUE отключает динамическое летнее время, в результате чего система будет использовать фиксированный набор дат перехода.
Чтобы восстановить динамическое летнее время, вызовите функцию SetDynamicTimeZoneInformation с параметром DynamicDaylightTimeDisabled со значением FALSE. Система будет считывать даты перехода на текущий год при следующем обновлении, следующей перезагрузке системы или конце календарного года (в зависимости от того, что наступит раньше).
При вызове функции GetDynamicTimeZoneInformation этот элемент имеет значение TRUE, если часовой пояс был задан с помощью функции SetTimeZoneInformation вместо SetDynamicTimeZoneInformation или если пользователь отключил эту функцию с помощью приложения даты и времени в панель управления.
Чтобы отключить переход на летнее время, задайте для этого элемента значение TRUE, снимите флажки StandardDate и DaylightDate и вызовите Метод SetDynamicTimeZoneInformation. Чтобы восстановить летнее время, вызовите SetDynamicTimeZoneInformation с параметром DynamicDaylightTimeDisabled с значением FALSE.
Комментарии
Динамическая переход на летнее время обеспечивает поддержку часовых поясов, границы которых для перехода на летнее время меняются из года в год. Эта функция позволяет упростить обновление систем, особенно для языковых стандартов, где границы летнего перехода на летнее время известны заранее. После обновления часового пояса текущий параметр часового пояса применяется ко всем временным операциям, даже если это время произошло до изменения часового пояса. Поэтому лучше сохранить время в формате UTC и преобразовать его в текущий местный часовой пояс.
Вы можете задать даты перехода для текущего года с помощью функции SetDynamicTimeZoneInformation . Чтобы задать даты перехода в будущем, необходимо добавить записи в данные реестра. Параметры динамического дневного времени хранятся в следующем разделе реестра:
HKEY_LOCAL_MACHINE SOFTWARE Microsoft Windows NT CurrentVersion Time Zones time_zone_name Dynamic DST
Каждый раздел динамического DST включает следующие значения реестра.
Значение реестра | Тип | Описание |
---|---|---|
FirstEntry | REG_DWORD | Первый год в таблице. |
LastEntry | REG_DWORD | Последний год в таблице. |
год1 | REG_BINARY |
Следующие сведения о часовом поясе.
|
год2 | REG_BINARY | Структура REG_TZI_FORMAT . |
Стремятся | REG_BINARY | Структура REG_TZI_FORMAT . |
Дополнительные сведения о других значениях в разделе "Часовые пояса " см. в разделе TIME_ZONE_INFORMATION.
Как StandardName, так и DaylightName локализованы в соответствии с текущим пользовательским языком пользовательского интерфейса по умолчанию.
Требования
Минимальная версия клиента | Windows Vista [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2008 [классические приложения | Приложения UWP] |
Верхняя часть | timezoneapi.h (включая Timezoneapi.h, Windows.h) |