Objeto SWbemDateTime

El objeto SWbemDateTime es un objeto auxiliar para analizar y establecer valores datetime del Modelo de información común (CIM). Desempeña un papel similar a SWbemObjectPath, que proporciona ayuda para dar formato e interpretar las rutas de acceso a objetos. Puede usar la llamada CreateObject de VBScript para crear el objeto SWbemDateTime.

Un objeto SWbemDateTime se puede inicializar desde valores de VT_DATE o FILETIME utilizando métodos en el objeto, y se le puede dar formato del mismo modo. Utilizando las propiedades del objeto, el valor puede analizarse en componentes de año, mes, día, hora, minutos, segundos o microsegundos. Se puede dar formato al objeto SWbemDateTime en valores locales o de hora universal coordinada (UTC). Para obtener más información, vea Formato de fecha y hora.

SWbemDateTime es el único objeto de scripting de Instrumental de administración de Windows (WMI) que está marcado como seguro para la inicialización y los scripts que se ejecutan en páginas HTML en Internet Explorer.

Miembros

El objeto SWbemMethod contiene estos tipos de miembros:

Métodos

El objeto SWbemDateTime tiene estos métodos.

Método Descripción
GetFileTime Convierte una fecha y hora FILETIME , expresada como BSTR, en un formato DATETIME de WMI.
GetVarDate Convierte un valor de fecha y hora con formato DATETIME de WMI en un VT_DATE.
SetFileTime Convierte un formato DATETIME de WMI en una fecha y hora FILETIME, expresada como BSTR.
SetVarDate Convierte una fecha y hora con formato VT_DATE en un objeto DATETIME de WMI.

Propiedades

El objeto SWbemDateTime tiene estas propiedades.

Propiedad Tipo de acceso Descripción
Día
Lectura/escritura
El componente de día de un valor datetime de CIM.
DaySpecified
Lectura/escritura
Indica si el día se especifica o se deja como carácter comodín.
Hours
Lectura/escritura
Horas del componente de día de un valor datetime de CIM.
HoursSpecified
Lectura/escritura
Indica si la hora se especifica o se deja como carácter comodín.
IsInterval
Lectura/escritura
Indica que al menos un componente del objeto datetime de CIM representa un intervalo en lugar de una fecha.
Microsegundos
Lectura/escritura
El componente de microsegundos de un valor datetime de CIM.
MicrosecondsSpecified
Lectura/escritura
Indica si el componente de microsegundos se especifica o se deja como carácter comodín.
Minutos
Lectura/escritura
El componente de minutos de un valor datetime de CIM.
MinutesSpecified
Lectura/escritura
Indica si el componente de minutos se especifica o se deja como carácter comodín.
Month
Lectura/escritura
EL componente de mes de un valor datetime de CIM.
MonthSpecified
Lectura/escritura
Indica si el mes se especifica o se deja como carácter comodín.
Segundos
Lectura/escritura
El componente de segundos de un valor datetime de CIM.
SecondsSpecified
Lectura/escritura
Indica si el componente de segundos se especifica o se deja como carácter comodín.
UTC
Lectura/escritura
El componente UTC de un valor datetime de CIM.
UTCSpecified
Lectura/escritura
Indica si el componente de UTC se especifica o se deja como carácter comodín.
Value
Lectura/escritura
El valor datetime de CIM completo.
Year
Lectura/escritura
El componente de año de un valor datetime de CIM.
YearSpecified
Lectura/escritura
Indica si el año se especifica o se deja como carácter comodín.

Comentarios

WMI registra las marcas de tiempo en formato de coordenadas horarias universales (UTC). UTC no es el formato que usan la mayoría de los desarrolladores y administradores de TI. Por lo tanto, un problema común consiste en determinar cómo traducir UTC en algo más legible. Para obtener más información sobre cómo trabajar con UTC, vea Tareas de WMI: fechas y horas y Trabajo con fechas y horas mediante WMI. También puede leer la entrada de blog Es cuestión de horas (pero también de fechas) para obtener más información.

Cualquier campo numérico puede tener un valor comodín si la propiedad IsInterval está establecida en FALSE. Los campos con valores comodín contienen asteriscos en todo el campo.

Cada propiedad, por ejemplo Day, tiene un valor booleano especificado correspondiente, como DaySpecified. Cuando DaySpecified es FALSE, el valor se interpreta como un intervalo en lugar de un número entre 01 y 31. Si se usa un intervalo en cualquier lugar del valor datetime de CIM, IsInterval también se establece en TRUE. De manera predeterminada, un valor datetime de CIM contiene una fecha en lugar de uno o más intervalos.

Por ejemplo, si SWbemDateTime.DaySpecified es TRUE, SWbemDateTime.Value incluye el valor actual de SWbemDateTime.Day; de lo contrario, es un valor comodín. La propiedad IsInterval es FALSE en cualquier caso.

Ejemplos

En el siguiente ejemplo de código de script se muestra cómo usar un objeto SWbemDateTime para analizar un valor de propiedad datetime leído del repositorio de WMI, la propiedad InstallDate en 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

En el ejemplo siguiente se muestra cómo crear un objeto SWbemDateTime, almacenar un valor de fecha en el objeto, mostrar la fecha como hora universal coordinada y local (UTC) y almacenar el valor en una clase y propiedad recién creadas. Para obtener más información sobre la constante wbemCimtypeDatetime, consulte 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_

En el ejemplo de código de script siguiente se muestra cómo usar un objeto SWbemDateTime para modificar un valor de intervalo en una propiedad que se lee desde el repositorio 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_

En el ejemplo de código de script siguiente se muestra cómo usar un objeto SWbemDate para leer un valor 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

El siguiente código de PowerShell crea una instancia de un objeto SWbemDateTime, recupera la fecha de instalación del sistema operativo y convierte la fecha en un formato diferente.

# 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() 

El siguiente código de PowerShell traduce el código en un formato listo para que lo consuma un proveedor de CIM.

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

Requisitos

Requisito Value
Cliente mínimo compatible
Windows Vista
Servidor mínimo compatible
Windows Server 2008
Encabezado
Wbemdisp.h
Biblioteca de tipos
Wbemdisp.tlb
Archivo DLL
Wbemdisp.dll
CLSID
CLSID_SWbemDateTime
IID
IID_ISWbemDateTime

Consulte también

WbemCimtypeEnum

DATETIME

Objetos de API de scripting