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


Объект SWbemDateTime

Объект SWbemDateTime — это вспомогательный объект для анализа и задания значений даты и времени модели CIM. Он играет роль, аналогичную SWbemObjectPath, которая предоставляет помощь в форматировании и интерпретации путей к объектам. Для создания объекта SWbemDateTime можно использовать вызов CreateObject VBScript.

Объект SWbemDateTime можно инициализировать из и отформатировать в значениях VT_DATE или FILETIME с помощью методов объекта . С помощью свойств объекта значение можно проанализировать в компонентный год, месяц, день, час, минуты, секунды или микросекунды. Объект SWbemDateTime можно отформатировать как в локальном, так и в формате UTC. Дополнительные сведения см. в разделе Формат даты и времени.

SWbemDateTime — это единственный объект скриптов инструментария управления Windows (WMI), который помечен как безопасный для инициализации и выполнения скриптов на HTML-страницах в Интернет-Обозреватель.

Элементы

Объект SWbemDateTime имеет следующие типы элементов:

Методы

Объект SWbemDateTime содержит следующие методы.

Метод Описание
GetFileTime Преобразует дату и время FILETIME , выраженные в виде BSTR, в формат WMI DATETIME .
GetVarDate Преобразует значение даты и времени в формате WMI DATETIME в VT_DATE.
SetFileTime Преобразует формат WMI DATETIME в формат FILETIME даты и времени, выраженные в виде BSTR.
SetVarDate Преобразует VT_DATE форматированные дату и время в WMI DATETIME.

Свойства

Объект SWbemDateTime имеет следующие свойства.

Свойство Тип доступа Описание
День
Чтение/запись
Компонент дня значения даты и времени CIM.
DaySpecified
Чтение/запись
Указывает, указан ли день или оставлен в качестве подстановочного знака.
Hours
Чтение/запись
Часы в компоненте дня значения даты и времени CIM.
Часы, указанные
Чтение/запись
Указывает, указан ли час или оставлен в качестве подстановочного знака.
IsInterval
Чтение/запись
Указывает, что по крайней мере один компонент CIM datetime представляет интервал, а не дату.
Микросекунды
Чтение/запись
Компонент микросекунд значения даты и времени CIM.
MicrosecondsSpecified
Чтение/запись
Указывает, указан ли компонент микросекунд или оставлен в качестве подстановочного знака.
Минуты
Чтение/запись
Компонент минут значения даты и времени CIM.
MinutesSpecified
Чтение/запись
Указывает, указан ли компонент минут или оставлен в качестве подстановочного знака.
Месяц
Чтение/запись
Компонент месяца значения даты и времени CIM.
MonthSpecified
Чтение/запись
Указывает, указан ли месяц или оставлен в качестве подстановочного знака.
Секунды
Чтение/запись
Компонент секунд значения даты и времени CIM.
SecondsSpecified
Чтение/запись
Указывает, указан ли компонент секунд или оставлен в качестве подстановочного знака.
Формат UTC.
Чтение/запись
Компонент UTC значения даты и времени CIM.
UTCSpecified
Чтение/запись
Указывает, указан ли компонент UTC или оставлен в качестве подстановочного знака.
Значение
Чтение/запись
Полное значение даты и времени CIM.
Год
Чтение/запись
Компонент года значения даты и времени CIM.
YearSpecified
Чтение/запись
Указывает, указан ли год или оставлен в качестве подстановочного знака.

Комментарии

WMI записывает метки времени в формате UTC. Формат UTC не используется большинством разработчиков и ИТ-администраторов. Поэтому распространенной проблемой является определение способа преобразования UTC в нечто более удобочитаемое. Дополнительные сведения о работе в формате UTC см. в разделах Задачи WMI: даты и время и Работа с датами и временем с помощью WMI. Вы также можете прочитать запись блога It s About Time (Oh, and About Dates, Too) для получения дополнительной информации.

Любое числовое поле может иметь подстановочное значение, если свойство IsInterval имеет значение FALSE. Поля со значениями подстановочных знаков содержат звездочки во всем поле.

Каждое свойство, например Day, имеет соответствующее указанное логическое значение, например DaySpecified. Если daySpecified имеет значение FALSE, значение интерпретируется как интервал, а не как число от 01 до 31. Если интервал используется в любом месте значения даты и времени CIM, isInterval также имеет значение TRUE. По умолчанию значение даты и времени CIM содержит дату, а не один или несколько интервалов.

Например, если SWbemDateTime.DaySpecified имеет значение TRUE, то значение SWbemDateTime.Value включает текущее значение SWbemDateTime.Day, в противном случае — подстановочное значение. В обоих случаях свойство IsInterval имеет значение FALSE .

Примеры

В следующем примере кода скрипта показано, как использовать объект SWbemDateTime для анализа значения свойства datetime, считываемого из репозитория WMI, свойства InstallDate в Win32_OperatingSystem.

' Create a new datetime object.
Set dateTime = CreateObject("WbemScripting.SWbemDateTime")

' Retrieve a WMI object that contains a datetime value.
for each os in GetObject( _
    "winmgmts:").InstancesOf ("Win32_OperatingSystem")

    ' The InstallDate property is a CIM_DATETIME. 
    MsgBox os.InstallDate
    dateTime.Value = os.InstallDate

    ' Display the year of installation.
    MsgBox "This OS was installed in the year " & dateTime.Year

    ' Display the installation date using the VT_DATE format.
    MsgBox "Full installation date (VT_DATE format) is " _
    & dateTime.GetVarDate

    ' Display the installation date using the FILETIME format.
    MsgBox "Full installation date (FILETIME format) is " _
    & dateTime.GetFileTime 
next
Set datetime = Nothing

В следующем примере показано, как создать объект SWbemDateTime , сохранить значение даты в объекте , отобразить дату в формате UTC и сохранить значение в только что созданном классе и свойстве. Дополнительные сведения о константе wbemCimtypeDatetime см. в разделе WbemCimtypeEnum.

' Create an SWbemDateTime object.
Set dateTime = CreateObject("WbemScripting.SWbemDateTime")
' Set the value 
Const wbemCimTypeDatetime = 101

' Construct a datetime value using the intrinsic VBScript CDate
' function interpreting this as a local date/time in
' the Pacific time zone (-8 hrs GMT). Convert to CIM datetime
' using SetVarDate method. The year defaults to current year.
dateTime.SetVarDate (CDate ("January 20 11:56:32"))

' The value in dateTime displays as 
' 20000120195632.000000-480. This is the equivalent time
' in GMT with the specified offset for PST of -8 hrs.
MsgBox "CIM datetime " & dateTime

' The value now displays as B=0/2000 11:56:32 AM because the
' parameter contains the default TRUE value causing the value to be
' interpreted as a local time.
MsgBox "Local datetime " & dateTime.GetVarDate ()

' The value now displays as B=0/2000 7:56:32 PM because the
' parameter value is FALSE, which indicates a GMT time.
' non-local time.
MsgBox "Datetime in GMT " & dateTime.GetVarDate (false)

' Create a new class and add a DateTime property value.
' SWbemServices.Get returns an empty SWbemObject
' which can become a new class. SWbemObject.Path_ returns an
' SWbemObjectPath object. 
set NewObject = GetObject("winmgmts:root\default").Get
NewObject.Path_.Class = "NewClass"

' Add a new property named "InterestingDate" to the NewObject class
' and define its datatype as a CIM datetime value.
NewObject.Properties_.Add "InterestingDate", wbemCimtypeDatetime

' Set the new value of the SWbemDateTime object in the InterestingDate
' property.
NewObject.InterestingDate = dateTime.Value
MsgBox "Datetime in new object " & NewObject.InterestingDate

' Write the new class (named "NewClass") containing
' the SWbemDateTime object to the repository.
NewObject.Put_
WScript.Echo "NewClass is now in WMI repository"

' Clean up the example by deleting the new class from the repository
NewObject.Delete_

В следующем примере кода скрипта показано, как использовать объект SWbemDateTime для изменения значения интервала в свойстве, считываемом из репозитория WMI.

' Construct an interval value of 100 days, 1 hour, and 3 seconds.
dateTime.IsInterval = true 
dateTime.Day = 100
dateTime.Hours = 1
dateTime.Seconds = 3

' The datetime displays as 00000100010003.000000:000.
MsgBox "Constructed interval value " & datetime

' Retrieve an empty WMI object and add a datetime property. 
Const wbemCimTypeDatetime = 101
Set NewObject = GetObject("winmgmts:root\default").Get
NewObject.Path_.Class = "Empty"
NewObject.Properties_.Add "InterestingDate", wbemCimtypeDatetime

' Set the new value in the property and update. 
NewObject.InterestingDate = dateTime.Value
MsgBox "NewObject.InterestingDate = " & NewObject.InterestingDate

' Write the new SWbemDateTime object to the repository.
NewObject.Put_

' Delete the object.
NewObject.Delete_

В следующем примере кода скрипта показано, как использовать объект SWbemDate для чтения значения FILETIME .

' Create a new datetime object.
Set datetime = CreateObject("WbemScripting.SWbemDateTime")

' Set from a FILETIME value (non-local).
' Assume a timezone -7 hrs. GMT.
MsgBox "FILETIME value " & "126036951652030000"
datetime.SetFileTime "126036951652030000", false

' Displays as 5/24/2000 7:26:05 PM.
MsgBox "GMT time " & dateTime.GetVarDate   

' Set from a FILETIME value (local).
datetime.SetFileTime "126036951652030000"

' Displays as 5/25/2000 2:26:05 AM.
MsgBox "Same value in local time " & dateTime.GetVarDate
Set datetime = Nothing

Следующий код PowerShell создает экземпляр объекта SWbemDateTime, извлекает дату установки ОС и преобразует дату в другой формат.

# Create swbemdatetime object
$datetime = New-Object -ComObject WbemScripting.SWbemDateTime

#  Get OS installation time and assign to datetime object
$os = Get-WmiObject -Class Win32_OperatingSystem
$dateTime.Value = $os.InstallDate

# Now display the time
"This OS was installed in the year {0}"           -f $dateTime.Year
"Full installation date (VT_DATE format) is {0}"  -f $dateTime.GetVarDate()
"Full installation date (FILETIME format) is {0}" -f $dateTime.GetFileTime() 

Следующий код PowerShell преобразует код в формат, готовый к использованию поставщиком CIM.

 $time = (Get-Date)
 $objScriptTime = New-Object -ComObject WbemScripting.SWbemDateTime
 $objScriptTime.SetVarDate($time)
 $cimTime = $objScriptTime.Value

Требования

Требование Значение
Минимальная версия клиента
Windows Vista
Минимальная версия сервера
Windows Server 2008
Заголовок
Wbemdisp.h
Библиотека типов
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemDateTime
IID
IID_ISWbemDateTime

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

WbemCimtypeEnum

DATETIME

Объекты API для создания скриптов