CIM_DATETIME
Du kan komma åt alla Common Information Model (CIM) datum och tider i WMI med något av två format med fast längd som är specifika för WMI och CIM. I skript använder du objektet SWbemDateTime för att konvertera dessa till vanliga datum och tider.
I följande avsnitt beskrivs hur du använder WMI-datum- och tidsformaten.
Format
I följande tabell visas de två datum- och tidsformat som används av WMI.
Format | Beskrivning |
---|---|
DATETIME- yyyymmddHHMMSS.mmmmsUUU |
Format där CIM DATETIME- värden lagras. Det här formatet är språkoberoende så du kan skriva ett skript som körs på valfri dator. Du måste använda det här formatet för att definiera ett datum och en tid i MOF(Managed Object Format), eller när du skriver till en instans med hjälp av COM API för WMI eller Scripting API för WMI. Mer information finns i Ändra en instansegenskap. |
Formatera endast giltigt i WMI-frågor (WQL). åå-mm-dd HH:MM:SS:mmm |
Det här formatet kan användas i skript som använder metoderna SWbemDateTime. Mer information finns i Querying WMI or Querying with WQL. Det här formatet är inte oberoende av nationella inställningar. Ordningen på år, månad och dag beror på inställningen för regionalt format och språkformat för användarsessionen. Även om standardvärdet för engelska i USA är "mm-dd-ååååå hh:mm:ss:mmm" är formatet för de flesta andra länder eller regioner "åååå-mm-dd hh:mm:ss:mmm". |
I följande tabell visas fälten i formaten.
Fält | Beskrivning |
---|---|
yyyy | Fyrsiffrigt år (0000 till 9999). Implementeringen kan begränsa det intervall som stöds. Till exempel kan en implementering endast stödja åren 1980 till och med 2099. |
mm | Tvåsiffrig månad (01 till 12). |
dd | Tvåsiffrig dag i månaden (01 till 31). Det här värdet måste vara lämpligt för månaden. Den 31 februari är till exempel inte giltig. Implementeringen behöver dock inte söka efter giltiga data. |
HH | Tvåsiffrig timme på dagen med 24-timmarsklockan (00 till 23). |
MM- | Tvåsiffrig minut i timmen (00 till 59). |
SS- | Tvåsiffrigt antal sekunder i minuten (00 till 59). |
mmmm | Sexsiffrigt antal mikrosekunder under den andra (000000 till och med 999999). Implementeringen behöver inte stödja utvärdering med hjälp av det här fältet. Det här fältet måste dock alltid finnas för att bevara strängens fasta längd. |
mmm | Tresiffrigt antal millisekunder i minuten (000 till 999). |
s | Plustecken (+) eller minustecken (-) för att indikera en positiv eller negativ förskjutning från Coordinated Universal Times (UTC). |
UUU | Tresiffrig förskjutning som anger antalet minuter som den ursprungliga tidszonen avviker från UTC. För WMI uppmuntras det, men krävs inte, att konvertera tider till GMT (en UTC-förskjutning på noll). |
Du måste ange alla fält med angiven längd och använda inledande nollor efter behov för typen. Använd dock asterisker för att ange oanvända fält eller som jokerteckenvärde. Du kan använda en asterisk (*) överallt förutom satsen WHERE i en fråga. Till exempel kan ett datum och en tid med ett ospecificerat år inträffa under valfritt år. Om du vill lämna ett fält ospecificerat måste du ersätta hela fältet med asterisker.
I följande exempel beskrivs giltiga och ogiltiga användningsområden för asterisker:
- 19980416******.000000+*** (juridisk)
- 1998-04-16 ******:*** (olagligt)
- 199*0416******.000000+*** (olagligt)
- 199*-04-16 ******:*** (olagligt)
Om en datetime används för att representera en viss tidpunkt bör alla dess fält innehålla data. Om den används för att representera ett tidsintervall bör endast de fält som behövs för att förmedla varaktigheten innehålla data.
I följande exempel beskrivs "April first": ett datum i förhållande till ett ospecificerat år men fortfarande en definierad punkt om måttnivån är en dag.
- ****0401******.000000+***
- -04-01 ******:*** (olagligt)
Ställa in UTC-förskjutning och GMT
I följande exempel beskrivs hur du kan definiera en tid utan tidszon genom att placera asterisker i UUU-fältet efter plus- eller minustecknet:
- 19980401135809.000000+***
- 19980401135809.000000-***
- 1998-04-01 13:58:09:*** (Olagligt)
Ett program tolkar en ozonlös datum- och tidsreferens till en lokal, abstrakt kronometer i det körande operativsystemet. Bärbara datorer kan till exempel ha interna klockor vars inställningar kanske eller kanske inte motsvarar den geografiska tidszonen. Du kan tolka ozonlös tid genom att ersätta tidszonen för den aktuella abstrakta tidskällan i stället för den lokala tidszonen.
Du bör särskilt tänka på innebörden av UTC-förskjutningen med datum och tider i frågor. I allmänhet fungerar likhet, större än eller mindre än jämförelser mellan två datum och tider om datum och tider använder samma UTC-förskjutning. När du hanterar datum och tider som inträffar med olika tidszonsförskjutningar bör du först konvertera datum och tider till GMT.
Frågor som omfattar relativa datum och tider med asterisker i ett eller flera underfält är bara meningsfulla för WMI jämfört med likvärdighet. WMI tillåter inte att asterisker används som jokertecken. I stället jämför WMI relativa datum och tider på tecken-för-tecken-basis.
I följande exempel beskrivs två datum som en WMI-fråga inte anser vara lika med:
- 19980401135809.000000+***
- 19980401135809.000000+000
Konvertera till FILETIME- eller VT_DATE-format
Formatet CIM DATETIME används endast i WMI. Du kan konvertera till och från WMI-formatet och antingen FILETIME- eller VT_DATE-formatet genom att anropa metoderna för SWbemDateTime skriptobjekt. En FILETIME-datetime- struktur är ett 64-bitarsvärde som 32-bitars Windows-operativsystemen använder. VT_DATE format är ett automationsvariant datetime-värde som används av Visual Basic och ActiveX. I följande tabell visas konverteringsmetoderna.
Metod | Beskrivning |
---|---|
SWbemDateTime.GetFileTime | Hämtar ett DATETIME- värde i FILETIME- format. |
SWbemDateTime.GetVarDate | Hämtar ett DATETIME- värde i VT_DATE format. |
SWbemDateTime.SetFileTime | Anger en DATETIME-egenskap med hjälp av ett FILETIME- datum som indata. |
SWbemDateTime.SetVarDate | Anger en DATETIME-egenskap med ett VT_DATE datum som indata. |