Поделиться через


структура 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 Следующие сведения о часовом поясе.
typedef struct _REG_TZI_FORMAT
{
    LONG Bias;
    LONG StandardBias;
    LONG DaylightBias;
    SYSTEMTIME StandardDate;
    SYSTEMTIME DaylightDate;
} REG_TZI_FORMAT;
год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)

См. также раздел

GetDynamicTimeZoneInformation

SYSTEMTIME

SetDynamicTimeZoneInformation