Класс Win32_TimeZone

Класс WMIWin32_TimeZone представляет сведения о часовом поясе для компьютерной системы под управлением Windows, включая изменения, необходимые для перехода на летнее время.

Следующий пример синтаксиса — упрощенный MOF-код, который включает все наследуемые свойства. Свойства и методы находятся в алфавитном порядке, а не в порядке MOF.

Синтаксис

[Dynamic, Provider("CIMWin32"), UUID("{8502C4EC-5FBB-11D2-AAC1-006008C78BC7}"), AMENDMENT]
class Win32_TimeZone : CIM_Setting
{
  string Caption;
  string Description;
  string SettingID;
  sint32 Bias;
  sint32 DaylightBias;
  uint32 DaylightDay;
  uint8  DaylightDayOfWeek;
  uint32 DaylightHour;
  uint32 DaylightMillisecond;
  uint32 DaylightMinute;
  uint32 DaylightMonth;
  string DaylightName;
  uint32 DaylightSecond;
  uint32 DaylightYear;
  uint32 StandardBias;
  uint32 StandardDay;
  uint8  StandardDayOfWeek;
  uint32 StandardHour;
  uint32 StandardMillisecond;
  uint32 StandardMinute;
  uint32 StandardMonth;
  string StandardName;
  uint32 StandardSecond;
  uint32 StandardYear;
};

Члены

Класс Win32_TimeZone имеет следующие типы членов:

Элемент Property

Класс Win32_TimeZone имеет следующие свойства.

Смещение

Тип данных: sint32

Тип доступа: только для чтения

Квалификаторы: MappingStrings ("Win32API| Временные структуры| TIME_ZONE_INFORMATION| Смещение"), единицы ("минуты")

Текущее смещение для перевода по местному времени. Смещение — это разница между временем в формате UTC и местным временем. Все переводы между UTC и местным временем основаны на следующей формуле: UTC = местное время - смещение. Это свойство обязательно.

Caption

Тип данных: string

Тип доступа: только для чтения

Квалификаторы: MaxLen (64)

Краткое текстовое описание текущего объекта.

Это свойство наследуется от CIM_Setting.

DaylightBias

Тип данных: sint32

Тип доступа: только для чтения

Квалификаторы: MappingStrings ("Win32API| Временные структуры| TIME_ZONE_INFORMATION| DaylightBias"), единицы ("минуты")

Значение смещения, используемое во время перевода локального времени, которое выполняется в летнее время. Это свойство игнорируется, если не указано значение для свойства DaylightDay . Значение этого свойства добавляется к свойству Bias для формирования смещения, используемого в дневное время. В большинстве часовых поясов значение этого свойства равно -60.

DaylightDay

Тип данных: uint32

Тип доступа: только для чтения

Квалификаторы: MappingStrings ("Win32API| Временные структуры| TIME_ZONE_INFORMATION| DaylightDate|wDay")

DaylightDayOfWeekdaylightMonth , когда в этой операционной системе происходит переход от стандартного времени к летнему времени.

Пример. Если переходный день (DaylightDayOfWeek) приходится на воскресенье, то значение "1" указывает первое воскресенье daylightMonth, "2" — второе воскресенье и т. д. Значение "5" указывает последний DaylightDayOfWeek в месяце.

DaylightDayOfWeek

Тип данных: uint8

Тип доступа: только для чтения

Квалификаторы: MappingStrings ("Win32API| Временные структуры| TIME_ZONE_INFORMATION| DaylightDate|wDayOfWeek")

День недели, когда в операционной системе происходит переход от стандартного времени к летнему времени.

Воскресенье (0)

Понедельник (1)

Вторник (2)

Среда (3)

Четверг (4)

Пятница (5)

Суббота (6)

Пример: 1

DaylightHour

Тип данных: uint32

Тип доступа: только для чтения

Квалификаторы: MappingStrings ("Win32API| Временные структуры| TIME_ZONE_INFORMATION| DaylightDate|wHour")

Час дня, когда в операционной системе происходит переход от стандартного времени к летнему времени.

Пример: 2

DaylightMillisecond

Тип данных: uint32

Тип доступа: только для чтения

Квалификаторы: MappingStrings ("Win32API| Временные структуры| TIME_ZONE_INFORMATION| DaylightDate|wMilliseconds")

Миллисекунды daylightSecond , когда переход от стандартного времени к летнему времени происходит в операционной системе.

DaylightMinute

Тип данных: uint32

Тип доступа: только для чтения

Квалификаторы: MappingStrings ("Win32API| Временные структуры| TIME_ZONE_INFORMATION| DaylightDate|wMinute")

Минута дневного светаЧас, когда переход от стандартного времени к летнему времени происходит в операционной системе.

Пример: 59

DaylightMonth

Тип данных: uint32

Тип доступа: только для чтения

Квалификаторы: MappingStrings ("Win32API| Временные структуры| TIME_ZONE_INFORMATION| DaylightDate|wMonth")

Месяц, когда в операционной системе происходит переход от стандартного времени к летнему времени.

Январь (1)

Февраль (2)

Март (3)

Апрель (4)

Май (5)

Июнь (6)

Июль (7)

Август (8)

Сентябрь (9)

Октябрь (10)

Ноябрь (11)

Декабрь (12)

DaylightName

Тип данных: string

Тип доступа: только для чтения

Квалификаторы: MaxLen (256), MappingStrings (Win32API| Временные структуры| TIME_ZONE_INFORMATION| DaylightName")

Часовой пояс, представленный при переходе на летнее время.

Пример: "EDT" (восточное летнее время)

DaylightSecond

Тип данных: uint32

Тип доступа: только для чтения

Квалификаторы: MappingStrings ("Win32API| Временные структуры| TIME_ZONE_INFORMATION| DaylightDate|wSecond")

Секунда daylightMinute , когда переход от стандартного времени к летнему времени происходит в операционной системе.

Пример: 59

DaylightYear

Тип данных: uint32

Тип доступа: только для чтения

Квалификаторы: MappingStrings ("Win32API| Временные структуры| TIME_ZONE_INFORMATION| DaylightDate|wYear")

Год действия летнего времени. Это свойство не является обязательным.

Пример: 1997

Описание

Тип данных: string

Тип доступа: только для чтения

Текстовое описание текущего объекта.

Это свойство наследуется от CIM_Setting.

SettingID

Тип данных: string

Тип доступа: только для чтения

Квалификаторы: MaxLen (256)

Идентификатор, по которому известен текущий объект.

Это свойство наследуется от CIM_Setting.

StandardBias

Тип данных: uint32

Тип доступа: только для чтения

Квалификаторы: MappingStrings ("Win32API| Временные структуры| TIME_ZONE_INFORMATION| StandardBias"), единицы ("минуты")

Значение смещения, используемое, если переход на летнее время не действует. Это свойство игнорируется, если значение для StandardDay не указано. Значение этого свойства добавляется к свойству Bias для формирования смещения в течение стандартного времени.

Пример: 0

StandardDay

Тип данных: uint32

Тип доступа: только для чтения

Квалификаторы: MappingStrings ("Win32API| Временные структуры| TIME_ZONE_INFORMATION| StandardDate|wDay")

StandardDayOfWeekстандартного месяца , когда переход с летнего времени на стандартное время происходит в операционной системе.

Если переходный день (StandardDayOfWeek) приходится на воскресенье, то значение "1" означает первое воскресенье стандартного месяца, "2" — второе воскресенье и т. д. Значение "5" указывает последний StandardDayOfWeek в месяце.

StandardDayOfWeek

Тип данных: uint8

Тип доступа: только для чтения

Квалификаторы: MappingStrings ("Win32API| Временные структуры| TIME_ZONE_INFORMATION| StandardDate|wDayOfWeek")

День недели, когда в операционной системе происходит переход от летнего времени к стандартному времени.

Воскресенье (0)

Понедельник (1)

Вторник (2)

Среда (3)

Четверг (4)

Пятница (5)

Суббота (6)

StandardHour

Тип данных: uint32

Тип доступа: только для чтения

Квалификаторы: MappingStrings ("Win32API| Временные структуры| TIME_ZONE_INFORMATION| StandardDate|wHour")

Час дня, когда в операционной системе происходит переход от летнего времени к стандартному времени.

Пример: 11

StandardMillisecond

Тип данных: uint32

Тип доступа: только для чтения

Квалификаторы: MappingStrings ("Win32API| Временные структуры| TIME_ZONE_INFORMATION| StandardDate|wMilliseconds")

Миллисекунды standardSecond , когда переход с летнего времени на стандартное время происходит в операционной системе.

StandardMinute

Тип данных: uint32

Тип доступа: только для чтения

Квалификаторы: MappingStrings ("Win32API| Временные структуры| TIME_ZONE_INFORMATION| StandardDate|wMinute")

Минута стандартного дня , когда переход с летнего времени на стандартное время происходит в операционной системе.

Пример: 59

Стандартный Месяц

Тип данных: uint32

Тип доступа: только для чтения

Квалификаторы: MappingStrings ("Win32API| Временные структуры| TIME_ZONE_INFORMATION| StandardDate|wMonth")

Месяц, когда в операционной системе происходит переход от летнего времени к стандартному времени.

Январь (1)

Февраль (2)

Март (3)

Апрель (4)

Май (5)

Июнь (6)

Июль (7)

Август (8)

Сентябрь (9)

Октябрь (10)

Ноябрь (11)

Декабрь (12)

StandardName

Тип данных: string

Тип доступа: только для чтения

Квалификаторы: key, MaxLen (256), MappingStrings ("Win32API| | Временные структуры| TIME_ZONE_INFORMATION| StandardName")

Имя часового пояса, который представляется, когда действует стандартное время.

Пример: "EST" (восточное стандартное время)

StandardSecond

Тип данных: uint32

Тип доступа: только для чтения

Квалификаторы: MappingStrings ("Win32API| Временные структуры| TIME_ZONE_INFORMATION| StandardDate|wSecond")

Второй стандартныйminute , когда переход с летнего времени на стандартное время происходит в операционной системе.

Пример: 59

StandardYear

Тип данных: uint32

Тип доступа: только для чтения

Квалификаторы: MappingStrings ("Win32API| Временные структуры| TIME_ZONE_INFORMATION| StandardDate|wYear")

Год, когда действует стандартное время. Это свойство не является обязательным.

Пример: 1997

Комментарии

Класс Win32_TimeZone является производным от CIM_Setting.

При написании запросов WMI нельзя использовать стандартные форматы даты и времени, например 18.10.2002. Вместо этого необходимо преобразовать все даты, используемые в запросах, в формат UTC. Для этого требуется два шага: 1) Необходимо определить смещение (разницу в минутах) между часовыми поясами и временем по Гринвичу; 2) необходимо преобразовать значение 18.10.2002 в значение UTC.

Определение смещения от среднего времени по Гринвичу

По общему признанию, WMI затрудняет работу с датами и временем; К счастью, WMI по крайней мере позволяет легко определить смещение между часовыми поясами и средним по Гринвичу временем. Класс WMI Win32_TimeZone включает свойство Bias, которое возвращает смещение GMT.

strComputer = "."
Set objSWbemServices = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colTimeZone = objSWbemServices.ExecQuery _
 ("SELECT * FROM Win32_TimeZone")
For Each objTimeZone in colTimeZone
 Wscript.Echo "Offset: "& objTimeZone.Bias
Next

Преобразование даты в значение UTC

После определения смещения GMT необходимо преобразовать стандартную дату, например 18.10.2002, в формат UTC. Чтобы преобразовать стандартную дату в формат UTC, можно использовать функции даты VBScript, такие как Год, Месяц и День, чтобы изолировать отдельные компоненты, составляющие дату в формате UTC. После получения отдельных значений для этих компонентов их можно сцепить так же, как и любое другое строковое значение. Даты в формате UTC обрабатываются как строки, так как смещение GMT должно быть добавлено к концу. Если дата рассматривалась как число, это значение:

20011018113047.000000-480

Ошибочно будет рассматриваться как математическое уравнение (круглые скобки добавляются для ясности):

(20011018113047.000000) - (480)

Например, в дате 18.10.2002 отдельные компоненты:

  • Год: 2002
  • Месяц: 10
  • День: 18

Скрипту потребуется объединить эти три значения: строку "113047.000000" (представляющую время, включая миллисекунд) и смещение GMT для получения даты в формате UTC. Например, (круглые скобки снова добавлены для ясности):

(2002) & (10) & (18) & (113047.000000) & (-480)

Примечание

Функции VBScript Hour, Minute и Second можно использовать для преобразования временной части даты в формате UTC. Таким образом, время, например 11:30:47 утра, будет преобразовано в 113047.

 

Существует один осложняющий фактор. Месяц должен занять позиции 5 и 6 в строке; день должен занять позиции 7 и 8. Это не проблема с 10-м месяцем и 18-м днем. Но как получить 5 июля (месяц 7, день 5) для заполнения необходимых позиций? Ответ заключается в том, чтобы добавить начальный нуль к каждому значению, изменив таким образом 7 на 07 и 5 на 05.

Для этого используйте функцию VBScript Len, чтобы проверка длину (количество символов) в месяце и день. Если длина равна 1 (это означает, что имеется только один символ), добавьте ноль в начале. Таким образом:

If Len(dtmMonth) = 1 Then
    dtmMonth = "0" & dtmMonth
End If

Примеры

В следующем примере VBScript текущая дата преобразуется в дату в формате UTC.

strComputer = "."
Set objSWbemServices = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colTimeZone = objSWbemServices.ExecQuery _
 ("SELECT * FROM Win32_TimeZone")
For Each objTimeZone in colTimeZone
 strBias = objTimeZone.Bias
Next

dtmCurrentDate = Date
dtmTargetDate = Year(dtmCurrentDate)

dtmMonth = Month(dtmCurrentDate)
If Len(dtmMonth) = 1 Then
 dtmMonth = "0" & dtmMonth
End If

dtmTargetDate = dtmTargetDate & dtmMonth

dtmDay = Day(dtmCurrentDate)
If Len(dtmDay) = 1 Then
 dtmDay = "0" & dtmDay
End If

dtmTargetDate = dtmTargetDate & dtmDay & "000000.000000"
dtmTargetDate = dtmTargetDate & Cstr(strBias)

Следующий пример VBScript определяет смещение GMT, а затем преобразует указанную текущую дату (в данном случае 18.10.2002) в формат даты и времени в формате UTC. После преобразования даты это значение используется для поиска на компьютере и возвращает список всех папок, созданных после 18.10.2002.

strComputer = "."
Set objSWbemServices = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colTimeZone = objSWbemServices.ExecQuery _
 ("SELECT * FROM Win32_TimeZone")
For Each objTimeZone in colTimeZone
 strBias = objTimeZone.Bias
Next

dtmCurrentDate = "10/18/2002"
dtmTargetDate = Year(dtmCurrentDate)

dtmMonth = Month(dtmCurrentDate)
If Len(dtmMonth) = 1 Then
 dtmMonth = "0" & dtmMonth
End If

dtmTargetDate = dtmTargetDate & dtmMonth

dtmDay = Day(dtmCurrentDate)
If Len(dtmDay) = 1 Then
 dtmDay = "0" & dtmDay
End If

dtmTargetDate = dtmTargetDate & dtmDay & "000000.000000"
dtmTargetDate = dtmTargetDate & Cstr(strBias)

Set colFolders = objSWbemServices.ExecQuery _
 ("SELECT * FROM Win32_Directory WHERE CreationDate < '" & _
 dtmtargetDate & "'")
For Each objFolder in colFolders
 Wscript.Echo objFolder.Name
Next

В следующем примере кода VBScript отображаются параметры для экземпляров Win32_TimeZone.

Dim arDayOrWeek(7)
arDayOrWeek(0) = "Sunday"
arDayOrWeek(1) = "Monday"
arDayOrWeek(2) = "Tuesday"
arDayOrWeek(3) = "Wednesday"
arDayOrWeek(4) = "Thursday"
arDayOrWeek(5) = "Friday"
arDayOrWeek(6) = "Saturday"

Dim arMonth(13)
arMonth(1) = "January"
arMonth(2) = "Feburary"
arMonth(3) = "March"
arMonth(4) = "April"
arMonth(5) = "May"
arMonth(6) = "June"
arMonth(7) = "July"
arMonth(8) = "August"
arMonth(9) = "September"
arMonth(10) = "October"
arMonth(11) = "November"
arMonth(12) = "December"

strComputer = "."
wmiQuery = "Select * from Win32_TimeZone"
Set objWMIService = GetObject("winmgmts:\\" & _
    strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery(wmiQuery)

For Each objItem in colItems
    WScript.Echo "Day of Week setting is: " _
        & objItem.dayLightDayOfWeek _
        & " which is: " & arDayOrWeek(objItem.DaylightDayOfWeek)
    WScript.Echo "Hour: " & objItem.DaylightHour 
    WScript.Echo "Month: " & objItem.DaylightMonth _
        & " which is: " & arMonth(objItem.DaylightMonth )
    WScript.Echo "Description: " & objItem.DaylightName 
    WScript.Echo "The transition from DLS to Standard occurs: " 
    WScript.Echo "Day of Week setting is: " _
        & objItem.standardDayOfWeek _
        & " which is: " & arDayOrWeek(objItem.DaylightDayOfWeek)
    WScript.Echo "Hour: " & objItem.StandardHour 
    WScript.Echo "Month: " & objItem.StandardMonth _ 
        & " which is: " & arMonth(objItem.StandardMonth )
    WScript.Echo "Description: " & objItem.StandardName 
Next

Требования

Требование Значение
Минимальная версия клиента
Windows Vista
Минимальная версия сервера
Windows Server 2008
Пространство имен
Root\CIMV2
MOF
CIMWin32.mof
DLL
CIMWin32.dll

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

CIM_Setting

Классы операционной системы

SWbemDateTime

Формат даты и времени

Задачи WMI: даты и время