CIM_DATETIME

È possibile accedere a tutte le date e le ore di Common Information Model (CIM) in WMI usando uno dei due formati a lunghezza fissa specifici di WMI e CIM. Negli script utilizzare l'oggetto SWbemDateTime per convertirli in date e ore regolari.

Le sezioni seguenti descrivono come usare i formati di data e ora WMI.

Formato

Nella tabella seguente sono elencati i due formati di data e ora usati da WMI.

Formato Descrizione
DATETIME
yyyymmddHHMMSS.mmmmmmsUUU
Formato in cui vengono archiviati i valori DATETIME CIM. Questo formato è indipendente dalle impostazioni locali, quindi è possibile scrivere uno script eseguito in qualsiasi computer. È necessario usare questo formato per definire una data e un'ora in Managed Object Format (MOF) o quando si scrive in un'istanza usando l'API COM per WMI o l'API di scripting per WMI. Per altre informazioni, vedere Modifica di una proprietà dell'istanza.
Formato valido solo nelle query WQL (WMI Query Language).
Aaaa-mm-gg HH:MM:SS:mmm
Questo formato può essere usato negli script che usano i metodi SWbemDateTime. Per altre informazioni, vedere Esecuzione di query su WMI o query con WQL. Questo formato non è indipendente dalle impostazioni locali. L'ordine di anno, mese e giorno dipende dall'impostazione del formato di lingua e regionale della sessione utente. Ad esempio, mentre il valore predefinito per Stati Uniti inglese è "mm-dd-yyyy hh:mm:ss:mmm", il formato per la maggior parte degli altri paesi o aree geografiche è "aa-mm-gg hh:mm:ss:mmm".

Nella tabella seguente sono elencati i campi nei formati.

Campo Descrizione
yyyy Anno a quattro cifre (da 0000 a 9999). L'implementazione può limitare l'intervallo supportato. Ad esempio, un'implementazione può supportare solo gli anni dal 1980 al 2099.
mm Mese a due cifre (da 01 a 12).
dd Giorno a due cifre del mese (da 01 a 31). Questo valore deve essere appropriato per il mese. Ad esempio, il 31 febbraio non è valido. Tuttavia, l'implementazione non deve verificare la presenza di dati validi.
HH Ora a due cifre del giorno utilizzando l'orologio da 24 ore (da 00 a 23).
MM Minuto a due cifre nell'ora (da 00 a 59).
ß Numero a due cifre di secondi nel minuto (da 00 a 59).
mmmmmm Numero a sei cifre di microsecondi nel secondo (da 000000 a 999999). L'implementazione non deve supportare la valutazione usando questo campo. Tuttavia, questo campo deve essere sempre presente per mantenere la natura a lunghezza fissa della stringa.
mmm Numero a tre cifre di millisecondi nel minuto (da 000 a 999).
s Segno più (+) o segno meno (-) per indicare un offset positivo o negativo rispetto all'ora UTC (Coordinated Universal Times).
UUU Offset a tre cifre che indica il numero di minuti che il fuso orario di origine devia dall'ora UTC. Per WMI, è consigliabile, ma non necessario, convertire le ore in GMT (offset UTC pari a zero).

È necessario immettere tutti i campi con la lunghezza indicata, utilizzando zeri iniziali in base al tipo. Usare tuttavia gli asterischi per indicare i campi inutilizzati o come valore jolly. È possibile usare un asterisco (*) ovunque tranne la clausola WHERE di una query. Ad esempio, una data e un'ora con un anno non specificato possono verificarsi in qualsiasi anno. Se si desidera lasciare un campo non specificato, è necessario sostituire l'intero campo con asterischi.

Gli esempi seguenti descrivono usi validi e non validi di asterischi:

  • 19980416******.000000+** (legale)
  • 1998-04-16 ******:*** (illegale)
  • 199*0416******.000000+** (non valido)
  • 199*-04-16 ******:*** (illegale)

Se un valore datetime viene usato per rappresentare un punto specifico nel tempo, tutti i relativi campi devono includere dati. Se viene usato per rappresentare un intervallo di tempo, solo i campi necessari per comunicare la durata devono includere i dati.

Nell'esempio seguente viene descritto "April first": una data relativa a un anno non specificato, ma ancora un punto definito se il livello di dettaglio della misurazione è un giorno.

  • ****0401******.000000+***
  • -04-01 ******:*** (non valido)

Impostazione dell'offset UTC e gmt

Gli esempi seguenti descrivono come definire un'ora senza fuso orario inserendo asterischi nel campo UUU dopo il segno più o meno:

  • 19980401135809.000000+***
  • 19980401135809.000000-***
  • 1998-04-01 13:58:09:** (illegale)

Un'applicazione interpreta un riferimento di data e ora non delimitato a un cronometro locale e astratto all'interno del sistema operativo in esecuzione. Ad esempio, i computer portatili possono avere orologi interni le cui impostazioni possono o non corrispondono al fuso orario geografico. È possibile interpretare l'ora non a zone sostituendo il fuso orario dell'origine dell'ora astratta corrente anziché il fuso orario locale.

È consigliabile prestare particolare attenzione al significato dell'offset UTC con date e ore nelle query. In generale, equivalenza, maggiore o minore di confronto funzionano tra due date e ore se le date e le ore usano lo stesso offset UTC. Quando si gestiscono date e ore che si verificano con offset di fuso orario diversi, è necessario prima convertire le date e le ore in GMT.

Le query che coinvolgono date e ore relative con asterischi in uno o più campi secondari sono significative solo per WMI rispetto all'equivalenza. WMI non consente inoltre l'uso di asterischi come caratteri jolly. WMI confronta invece date e ore relative in base a un carattere per carattere.

Gli esempi seguenti descrivono due date che una query WMI non considera uguali:

  • 19980401135809.000000+***
  • 19980401135809.000000+000

Conversione in formato FILETIME o VT_DATE

Il formato CIM DATETIME viene usato solo all'interno di WMI. È possibile eseguire la conversione in e dal formato WMI e dal formato FILETIME o VT_DATE chiamando i metodi dell'oggetto script SWbemDateTime . Una struttura datetime FILETIME è un valore a 64 bit usato dai sistemi operativi Windows a 32 bit. VT_DATE formato è un valore datetime variant di automazione usato da Visual Basic e ActiveX. Nella tabella seguente sono elencati i metodi di conversione.

metodo Descrizione
SWbemDateTime.GetFileTime Ottiene un valore DATETIME in formato FILETIME.
SWbemDateTime.GetVarDate Ottiene un valore DATETIME in formato VT_DATE.
SWbemDateTime.SetFileTime Imposta una proprietà DATETIME utilizzando una data FILETIME come input.
SWbemDateTime.SetVarDate Imposta una proprietà DATETIME utilizzando una data VT_DATE come input.

Formato Data e ora

Informazioni su WMI

Attività WMI: date e ore

Formato intervallo

SWbemObject.Put_

SWbemServicesEx.Put

SWbemDateTime

IWbemClassObject::P ut

IWbemServices::P utClass