SWbemDateTime对象是一个帮助对象,用于解析和设置公共信息模型(CIM)约会时间值。它起到类似于SWbemObjectPath的作用,它为格式化和解释对象路径提供了帮助。您可以使用VBScript CreateObject调用创建SWbemDateTime对象。
SWbemDateTime对象可以使用对象上的方法从VT_DATE或FILETIME值初始??化并格式化。使用对象的属性,该值可以解析为组件年,月,日,小时,分,秒或微秒。SWbemDateTime对象可以格式化为本地或协调世界时(UTC)值。有关详细信息,请参阅日期和时间格式.
SWbemDateTime是唯一的Windows管理规范(WMI)脚本对象,标记为安全的初始化和脚本在Internet Explorer中的HTML页面上运行。
方法
SWbemDateTime对象定义了以下方法。
方法 |
描述 |
SetVarDate |
将WMI DATETIME格式化的日期和时间值转换为VT_DATE. |
GetVarDate |
将VT_DATE格式化的日期和时间转换为WMI DATETIME。 |
SetFileTime |
将WMI DATETIME格式转换为FILETIME日期和时间,表示为BSTR. |
GetFileTime |
将FILETIME日期和时间(以BSTR表示)转换为WMI DATETIME格式。 |
属性
SWbemDateTime对象定义了以下属性。
属性 |
描述 |
天 |
CIM日期时间值的日期组件。 |
DaySpecified |
指示是指定日期还是作为通配符留下。 |
小时 |
CIM日期时间值的时间分量。 |
HoursSpecified |
指示小时是指定还是作为通配符留下。 |
IsInterval |
表示CIM datetime的至少一个组件表示间隔而不是日期。 |
微秒 |
CIM datetime值的微秒组件。 |
MicrosecondsSpecified |
指示微秒组件是指定还是作为通配符留下。 |
分钟 |
CIM日期时间值的分钟组件。 |
MinutesSpecified |
指示分钟组件是否被指定或作为通配符保留。 |
月 |
CIM日期时间值的月份组件。 |
MonthSpecified |
指示是指定月份还是作为通配符留下。 |
秒 |
CIM日期时间值的秒组件。 |
SecondsSpecified |
指示是否指定了秒组件或作为通配符保留。 |
UTC |
CIM日期时间值的UTC分量。 |
UTCSpecified |
指示UTC组件是指定还是作为通配符留下。 |
值 |
完整的CIM datetime值。 |
年 |
CIM日期时间值的年份。 |
YearSpecified |
指示年份是否被指定或作为通配符留下。 |
备注
如果IsInterval属性设置为FALSE,则任何数字字段都可以具有通配符值。具有通配符值的字段在整个字段中包含星号。
每个属性,例如天具有相应的指定布尔值,例如DaySpecified.当DaySpecified为FALSE时,该值被解释为间隔,而不是01和31之间的数字。如果在CIM日期时间值的任何位置使用间隔,则IsInterval也将设置为TRUE.默认值为CIM日期时间值包含日期而不是一个或多个间隔。
例如,如果SWbemDateTime.DaySpecified为TRUE,则SWbemDateTime.Value包含当前值SWbemDateTime.Day,否则为通配符值。在这两种情况下IsInterval属性都为FALSE。
示例:解析Datetime值
以下脚本代码示例显示如何使用SWbemDateTime对象来解析从WMI存储库读取的datetime属性值,Win32_OperatingSystem中的InstallDate属性。
'创建一个新的datetime对象。
设置dateTime = CreateObject(“WbemScripting.SWbemDateTime”)
'检索包含datetime值的WMI对象。
对于每个os在GetObject(_
“winmgmts:”)。InstancesOf(“Win32_OperatingSystem”)
'InstallDate属性是CIM_DATETIME。
MSGBOX os.InstallDate
dateTime.Value = os.InstallDate
显示安装年份
MsgBox“此操作系统已安装在”&dateTime.Year
'使用VT_DATE格式显示安装日期。
MsgBox“完整安装日期(VT_DATE格式)为”_
&dateTime.GetVarDate
'使用FILETIME格式显示安装日期。
MsgBox“完整安装日期(FILETIME格式)为”_
&dateTime.GetFileTime
下一个
设置datetime =没有
[PowerBASIC]
#COMPILE EXE
#DIM ALL
#INCLUDE "WbemDisp.INC"
FUNCTION PBMAIN () AS LONG
LOCAL hr AS LONG
LOCAL pDatetime AS ISWbemDateTime
LOCAL pServices AS ISWbemServices
LOCAL pObjectSet AS ISWbemObjectSet
LOCAL pEnum AS IEnumVariant
LOCAL vos AS VARIANT
LOCAL os AS DISPATCH
LOCAL vDate AS VARIANT
LOCAL bstrDate AS WSTRING
' Create a new datetime object.
pDateTime = NEWCOM "WbemScripting.SWbemDateTime"
IF ISNOTHING(pDateTime) THEN EXIT FUNCTION
' Create an instance of the SWbemServices object
pServices = WmiGetObject("winmgmts:")
IF ISNOTHING(pServices) THEN EXIT FUNCTION
TRY
' Create an enumerator
pObjectSet = pServices.InstancesOf("Win32_OperatingSystem")
IF ISNOTHING(pObjectSet) THEN EXIT FUNCTION
' Retrieve a reference to the collection's enumerator
pEnum = pObjectSet.NewEnum_
IF ISNOTHING(pEnum) THEN EXIT TRY
' Iterate through the collection of objects
DO
' Retrieve a reference to the next object in the collection
hr = pEnum.Next(1, vos, BYVAL %NULL)
IF hr <> %S_OK THEN EXIT LOOP
' Assign the VT_DISPATCH variant to the object variable
os = vos
' Empty the VT_DISPATCH variant
vos = EMPTY
' The InstallDate property is a CIM_DATETIME.
OBJECT GET os.InstallDate TO vDate
' Set the value of the raw CIM date
pDatetime.Value = VARIANT$$(vDate)
' Display the year of installation.
STDOUT "This OS was installed in the year " & FORMAT$(pDateTime.Year)
' Display the installation date using the VT_DATE format.
hr = VarBstrFromDate(pDateTime.GetVarDate(), 0, 0, bstrDate)
STDOUT "Full installation date (VT_DATE format) is " & ACODE$(bstrDate)
' Release the object
os = NOTHING
LOOP
CATCH
STDOUT "Error " & HEX$(OBJRESULT)
STDOUT WmiGetErrorCodeText(OBJRESULT)
FINALLY
' cleanup
pEnum = NOTHING
pObjectSet = NOTHING
END TRY
' Cleanup
pDateTime = NOTHING
pServices = NOTHING
WAITKEY$
END FUNCTION
示例:从VT_Date设置Datetime值
以下示例显示如何创建SWbemDateTime对象,在对象中存储日期值,将日期显示为本地和协调世界时(UTC),并将该值存储在新创建的类和属性中。有关常数wbemCimtypeDatetime的更多信息,请参阅WbemCimtypeEnum.
'创建一个SWbemDateTime对象。
设置dateTime = CreateObject(“WbemScripting.SWbemDateTime”)
'设置值
Const wbemCimTypeDatetime = 101
'使用内在的VBScript CDate构造一个datetime值
'功能将其解释为本地日期/时间
太平洋时区(GMT)转换为CIM datetime
'使用SetVarDate方法。年份默认为当年。
dateTime.SetVarDate(CDate(“January 20 11:56:32”))
'dateTime中的值显示为
' 20000120195632.000000-480.这是相当的时间
'在GMT时间为-8小时的PST指定的偏移量。
MsgBox“CIM datetime”&dateTime
'该值现在显示为B = 0/2000 11:56:32 AM,因为
'参数包含导致该值为默认的TRUE值
被解释为当地时间。
MsgBox“Local datetime”&dateTime.GetVarDate()
'现在值显示为B = 0/2000 7:56:32 PM,因为
'参数值为FALSE,表示GMT时间。
非本地时间
MsgBox“GMT的日期时间”&dateTime.GetVarDate(false)
'创建一个新类并添加一个DateTime属性值。
'SWbemServices.Get返回一个空的SWbemObject
“这可以成为一个新课。SWbemObject.Path_返回一个
'SWbemObjectPath对象。
设置NewObject = GetObject(“winmgmts:root \\ default”)
NewObject.Path_.Class =“NewClass”
'添加一个名为“InterestingDate”的新属性到NewObject类
'并将其数据类型定义为CIM datetime值。
NewObject.Properties_.Add“InterestingDate”,wbemCimtypeDatetime
'在InterestingDate中设置SWbemDateTime对象的新值
'财产。
NewObject.InterestingDate = dateTime.Value
MsgBox“新对象中的日期时间”&NewObject.InterestingDate
'写新的类(名为“NewClass”)包含
'到存储库的SWbemDateTime对象。
NewObject.Put_
WScript.Echo“NewClass现在在WMI存储库”
'通过从存储库中删除新的类来清理该示例
NewObject.Delete_
示例:设置间隔值
以下脚本代码示例显示如何使用SWbemDateTime对象修改从WMI存储库读取的属性上的间隔值。
'建立一个100天,1小时和3秒的间隔值。
dateTime.IsInterval = true
dateTime.Day = 100
dateTime.Hours = 1
dateTime.Seconds = 3
'datetime显示为00000100010003.0000000000。
MsgBox“构造间隔值”&datetime
'检索一个空的WMI对象并添加一个datetime属性。
Const wbemCimTypeDatetime = 101
设置NewObject = GetObject(“winmgmts:root \\ default”)
NewObject.Path_.Class =“空”
NewObject.Properties_.Add“InterestingDate”,wbemCimtypeDatetime
'在属性中设置新值并进行更新。
NewObject.InterestingDate = dateTime.Value
MsgBox“NewObject.InterestingDate =”&NewObject.InterestingDate
'将新的SWbemDateTime对象写入仓库。
NewObject.Put_
'删除对象。
NewObject.Delete_
示例:使用FILETIME值
以下脚本代码示例显示如何使用SWbemDate对象读取FILETIME值。
'创建一个新的datetime对象。
设置datetime = CreateObject(“WbemScripting.SWbemDateTime”)
'从一个FILETIME值(非本地)设置。
'假设时区-7小时。GMT.
MsgBox“FILETIME value”&“126036951652030000”
datetime.SetFileTime “126036951652030000”,假
'显示为5/24/2000 7:26:05 PM。
MsgBox“GMT time”&dateTime.GetVarDate
'从FILETIME值(本地)设置。
datetime.SetFileTime “126036951652030000”
'显示为5/25/2000 2:26:05 AM。
MsgBox“Local value in local time”&dateTime.GetVarDate
设置datetime =没有
要求
客户 |
需要Windows Vista或Windows XP。 |
服务器 |
需要Windows Server 2008或Windows Server 2003。 |
类型库 |
使用Wbemdisp.tlb。 |
DLL |
需要Wbemdisp.dll。 |