SWbemDateTime 对象

SWbemDateTime 对象是一个帮助器对象,用于分析和设置通用信息模型 (CIM) datetime值。 它扮演了类似于 SWbemObjectPath的角色,它为格式化和解释对象路径提供了帮助。 可以使用 VBScript CreateObject 调用来创建 SWbemDateTime 对象。

使用对象上的方法,可以使用 SWbemDateTime 对象在 VT _ DATEFILETIME 值中进行初始化并设置其格式。 使用对象的属性,可将该值分析为分量年、月、日、小时、分钟、秒或微秒。 可以 (UTC) 值将 SWbemDateTime 对象格式化为本地或协调世界时。 有关详细信息,请参阅 日期和时间格式

SWbemDateTime 是唯一 WINDOWS MANAGEMENT INSTRUMENTATION (WMI) 脚本对象,在 Internet Explorer 中标记为 "在 HTML 页面上运行初始化和脚本"。

成员

SWbemDateTime 对象具有以下类型的成员:

方法

SWbemDateTime 对象具有这些方法。

方法 描述
Getfiletime 期间 将以 BSTR 表示的 FILETIME 日期和时间转换为 WMI 日期时间格式。
GetVarDate 将 WMI 日期时间 格式的日期和时间值转换为 VT _ 日期
SetFileTime 将 WMI 日期时间格式转换为以 BSTR 形式表示的 FILETIME 日期和时间。
SetVarDate VT _ 日期 格式的日期和时间转换为 WMI 日期时间

属性

SWbemDateTime 对象具有这些属性。

属性 访问类型 描述
日期
读取/写入
CIM 日期时间 值的日部分。
DaySpecified
读取/写入
指示是将日期指定为通配符还是保留为通配符。
小时
读取/写入
CIM 日期时间 值的日部分的小时数。
HoursSpecified
读取/写入
指示是将小时指定为通配符还是保留为通配符。
IsInterval
读取/写入
指示 CIM datetime 的至少一个组件表示间隔而不是日期。
微秒
读取/写入
CIM 日期时间 值的微秒部分。
MicrosecondsSpecified
读取/写入
指示是否将微秒部分指定为通配符或将其保留为通配符。
分钟数
读取/写入
CIM 日期时间 值的分钟部分。
MinutesSpecified
读取/写入
指示是否将分钟部分指定为通配符或将其保留为通配符。
月份
读取/写入
CIM 日期时间 值的月份部分。
MonthSpecified
读取/写入
指示是将月份指定为通配符还是保留为通配符。

读取/写入
CIM 日期时间 值的秒部分。
SecondsSpecified
读取/写入
指示是否将秒部分指定为通配符,或者是否将其保留为通配符。
UTC
读取/写入
CIM 日期时间 值的 UTC 部分。
UTCSpecified
读取/写入
指示是否将 UTC 组件指定为通配符或将其保留为通配符。

读取/写入
完整的 CIM 日期时间 值。
年龄
读取/写入
CIM 日期时间 值的年份部分。
YearSpecified
读取/写入
指示是将年份指定为通配符还是将年份保留为通配符。

备注

WMI 以通用时间坐标 (UTC) 格式记录时间戳。 UTC 不是大多数开发人员和 IT 管理员使用的格式。 因此,一个常见的问题是确定如何将 UTC 转换为可读性更强的内容。 有关如何使用 UTC 的详细信息,请参阅 Wmi 任务:日期和时间 以及 使用 wmi 处理日期和时间。 你还可以阅读 关于时间 (日期和日期) , 还可以在 UTC 值中减去指定的天数? 博客文章了解其他信息。

如果 IsInterval 属性设置为 FALSE,则任何数值字段都可以有通配符值。 带有通配符值的字段包含整个字段中的星号。

每个属性(例如 Day)都有相应的指定布尔值,如 DaySpecified。 当 DaySpecifiedFALSE 时,该值将解释为间隔,而不是1到31之间的数字。 如果在 CIM 日期时间 值中的任何位置使用间隔,则 IsInterval 也设置为 TRUE。 默认情况下,将 CIM 日期时间值作为包含日期而不是一个或多个间隔的。

例如,如果 SWbemDateTimeTRUE,则 SWbemDateTime 将包含 SWbemDateTime的当前值,否则为通配符值。 在任一情况下, IsInterval 属性为 FALSE

示例

下面的脚本代码示例演示如何使用 SWbemDateTime 对象分析从 WMI 存储库( Win32 _ 操作系统中的 InstallDate 属性)读取的 datetime 属性值。

' 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 对象的实例,检索 OS 安装日期,并将日期转换为其他格式

# 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.tlb
类型库
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID _ SWbemDateTime
IID
IID _ ISWbemDateTime

另请参阅

WbemCimtypeEnum

脚本 API 对象