classe Win32_TimeZone

La classe WMIWin32_TimeZone rappresenta le informazioni sul fuso orario per un sistema computer che esegue Windows, che include le modifiche necessarie per la transizione all'ora legale.

La sintassi seguente è semplificata dal codice MOF (Managed Object Format) e include tutte le proprietà ereditate. Le proprietà e i metodi sono in ordine alfabetico, non in ordine MOF.

Sintassi

[Dynamic, Provider("CIMWin32"), UUID("{8502C4EC-5FBB-11D2-AAC1-006008C78BC7}"), AMENDMENT]
class Win32_TimeZone : CIM_Setting
{
  string Caption;
  string Description;
  string SettingID;
  sint32 Bias;
  sint32 DaylightBias;
  uint32 DaylightDay;
  uint8  DaylightDayOfWeek;
  uint32 DaylightHour;
  uint32 DaylightMillisecond;
  uint32 DaylightMinute;
  uint32 DaylightMonth;
  string DaylightName;
  uint32 DaylightSecond;
  uint32 DaylightYear;
  uint32 StandardBias;
  uint32 StandardDay;
  uint8  StandardDayOfWeek;
  uint32 StandardHour;
  uint32 StandardMillisecond;
  uint32 StandardMinute;
  uint32 StandardMonth;
  string StandardName;
  uint32 StandardSecond;
  uint32 StandardYear;
};

Members

La classe Win32_TimeZone ha questi tipi di membri:

Proprietà

La classe Win32_TimeZone ha queste proprietà.

Bias

Tipo di dati: sint32

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API| Strutture temporali | TIME_ZONE_INFORMATION| Bias"), unità ("minuti")

Distorsione corrente per la traduzione dell'ora locale. La distorsione è la differenza tra l'ora UTC (Coordinated Universal Time) e l'ora locale. Tutte le traduzioni tra l'ora UTC e l'ora locale si basano sulla formula seguente: UTC = ora locale - distorsione. Questa proprietà è obbligatoria.

Didascalia

Tipo di dati: string

Tipo di accesso: sola lettura

Qualificatori: MaxLen (64)

Breve descrizione testuale dell'oggetto corrente.

Questa proprietà viene ereditata da CIM_Setting.

DaylightBias

Tipo di dati: sint32

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API| Strutture temporali | TIME_ZONE_INFORMATION| DaylightBias"), unità ("minuti")

Valore di distorsione da usare durante le traduzioni dell'ora locale che si verificano durante l'ora legale. Questa proprietà viene ignorata se non viene fornito un valore per la proprietà DaylightDay . Il valore di questa proprietà viene aggiunto alla proprietà Bias per formare la distorsione utilizzata durante l'ora legale. Nella maggior parte dei fusi orari, il valore di questa proprietà è -60.

Giorno legale

Tipo di dati: uint32

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API| Strutture temporali | TIME_ZONE_INFORMATION| DaylightDate|wDay")

DaylightDayOfWeek di DaylightMonth quando si verifica la transizione dall'ora solare all'ora legale in questo sistema operativo.

Esempio: se il giorno di transizione (DaylightDayOfWeek) si verifica una domenica, il valore "1" indica la prima domenica del giorno di DaylightMonth, "2" indica la seconda domenica e così via. Il valore "5" indica l'ultimo DaylightDayOfWeek nel mese.

DaylightDayOfWeek

Tipo di dati: uint8

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API| Strutture temporali | TIME_ZONE_INFORMATION| DaylightDate|wDayOfWeek")

Giorno della settimana in cui si verifica la transizione dall'ora solare all'ora legale in un sistema operativo.

Domenica (0)

Lunedì (1)

Martedì (2)

Mercoledì (3)

Giovedì (4)

Venerdì (5)

Sabato (6)

Esempio: 1

DaylightHour

Tipo di dati: uint32

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API| Strutture temporali | TIME_ZONE_INFORMATION| DaylightDate|wHour")

Ora del giorno in cui viene eseguita la transizione dall'ora solare all'ora legale in un sistema operativo.

Esempio: 2

DaylightMillisecond

Tipo di dati: uint32

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API| Strutture temporali | TIME_ZONE_INFORMATION| DaylightDate|wMilliseconds")

Millisecondo di DaylightSecond quando si verifica la transizione dall'ora solare all'ora legale in un sistema operativo.

DaylightMinute

Tipo di dati: uint32

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API| Strutture temporali | TIME_ZONE_INFORMATION| DaylightDate|wMinute")

Minuto dell'ora legale quando si verifica la transizione dall'ora solare all'ora legale in un sistema operativo.

Esempio: 59

DaylightMonth

Tipo di dati: uint32

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API| Strutture temporali | TIME_ZONE_INFORMATION| DaylightDate|wMonth")

Mese in cui si verifica la transizione dall'ora solare all'ora legale in un sistema operativo.

Gennaio (1)

Febbraio (2)

Marzo (3)

Aprile (4)

Maggio (5)

Giugno (6)

Luglio (7)

Agosto (8)

Settembre (9)

Ottobre (10)

Novembre (11)

Dicembre (12)

DaylightName

Tipo di dati: string

Tipo di accesso: sola lettura

Qualificatori: MaxLen (256), MappingStrings ("Win32API| Strutture temporali | TIME_ZONE_INFORMATION| DaylightName")

Fuso orario rappresentato quando l'ora legale è attiva.

Esempio: "EDT" (ora legale orientale)

DaylightSecond

Tipo di dati: uint32

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API| Strutture temporali | TIME_ZONE_INFORMATION| DaylightDate|wSecond")

Secondo di DaylightMinute quando si verifica la transizione dall'ora solare all'ora legale in un sistema operativo.

Esempio: 59

Anno legale

Tipo di dati: uint32

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API| Strutture temporali | TIME_ZONE_INFORMATION| DaylightDate|wYear")

Anno in cui l'ora legale è effettiva. Questa proprietà non è obbligatoria.

Esempio: 1997

Descrizione

Tipo di dati: stringa

Tipo di accesso: sola lettura

Descrizione testuale dell'oggetto corrente.

Questa proprietà viene ereditata da CIM_Setting.

SettingID

Tipo di dati: stringa

Tipo di accesso: sola lettura

Qualificatori: MaxLen (256)

Identificatore in base al quale l'oggetto corrente è noto.

Questa proprietà viene ereditata da CIM_Setting.

StandardBias

Tipo di dati: uint32

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API| Strutture temporali | TIME_ZONE_INFORMATION| StandardBias"), unità ("minuti")

Valore di pregiudizio da usare quando l'ora legale non è effettiva. Questa proprietà viene ignorata se non viene fornito un valore per StandardDay . Il valore di questa proprietà viene aggiunto alla proprietà Bias per formare la distorsione durante l'ora standard.

Esempio: 0

StandardDay

Tipo di dati: uint32

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API| Strutture temporali | TIME_ZONE_INFORMATION| StandardDate|wDay")

StandardDayOfWeek dello StandardMonth quando la transizione dall'ora legale all'ora solare si verifica in un sistema operativo.

Se il giorno di transizione (StandardDayOfWeek) si verifica in una domenica, il valore "1" indica la prima domenica dello StandardMonth, "2" indica la seconda domenica e così via. Il valore "5" indica l'ultimo StandardDayOfWeek nel mese.

StandardDayOfWeek

Tipo di dati: uint8

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API| Strutture temporali | TIME_ZONE_INFORMATION| StandardDate|wDayOfWeek")

Giorno della settimana in cui la transizione dall'ora legale all'ora solare si verifica in un sistema operativo.

Domenica (0)

Lunedì (1)

Martedì (2)

Mercoledì (3)

Giovedì (4)

Venerdì (5)

Sabato (6)

StandardHour

Tipo di dati: uint32

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API| Strutture temporali | TIME_ZONE_INFORMATION| StandardDate|wHour")

Ora del giorno in cui la transizione dall'ora legale all'ora legale si verifica in un sistema operativo.

Esempio: 11

StandardMillisecond

Tipo di dati: uint32

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API| Strutture temporali | TIME_ZONE_INFORMATION| StandardDate|wMilliseconds")

Millisecondo dello StandardSecond quando la transizione dall'ora legale all'ora legale si verifica in un sistema operativo.

StandardMinute

Tipo di dati: uint32

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API| Strutture temporali | TIME_ZONE_INFORMATION| StandardDate|wMinute")

Minuto di StandardDay quando la transizione dall'ora legale all'ora legale si verifica in un sistema operativo.

Esempio: 59

StandardMonth

Tipo di dati: uint32

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API| Strutture temporali | TIME_ZONE_INFORMATION| StandardDate|wMonth")

Mese in cui la transizione dall'ora legale all'ora solare si verifica in un sistema operativo.

Gennaio (1)

Febbraio (2)

Marzo (3)

Aprile (4)

Maggio (5)

Giugno (6)

Luglio (7)

Agosto (8)

Settembre (9)

Ottobre (10)

Novembre (11)

Dicembre (12)

StandardName

Tipo di dati: stringa

Tipo di accesso: sola lettura

Qualificatori: key, MaxLen (256), MappingStrings ("Win32API| Strutture temporali | TIME_ZONE_INFORMATION| StandardName")

Nome del fuso orario rappresentato quando l'ora standard è effettiva.

Esempio: "EST" (Ora standard orientale)

StandardSecond

Tipo di dati: uint32

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API| Strutture temporali | TIME_ZONE_INFORMATION| StandardDate|wSecond")

Secondo dello StandardMinute quando la transizione dall'ora legale all'ora legale si verifica in un sistema operativo.

Esempio: 59

StandardYear

Tipo di dati: uint32

Tipo di accesso: sola lettura

Qualificatori: MappingStrings ("Win32API| Strutture temporali | TIME_ZONE_INFORMATION| StandardDate|wYear")

Anno in cui l'ora standard è effettiva. Questa proprietà non è obbligatoria.

Esempio: 1997

Commenti

La classe Win32_TimeZone deriva da CIM_Setting.

Non è possibile usare formati di data e ora standard, ad esempio 18/10/2002, durante la scrittura di query WMI. È invece necessario convertire le date usate nelle query in formato UTC. Sono necessari due passaggi: 1) È necessario determinare l'offset (differenza in minuti) tra il fuso orario e l'ora di Greenwich e 2) è necessario convertire 10/18/2002 in un valore UTC.

Determinazione dell'offset dal tempo medio di Greenwich

Certo, WMI rende difficile lavorare con date e ore; fortunatamente, WMI almeno semplifica la determinazione dell'offset tra il fuso orario e l'ora media di Greenwich. La classe WMI Win32_TimeZone include una proprietà Bias che restituisce l'offset GMT.

strComputer = "."
Set objSWbemServices = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colTimeZone = objSWbemServices.ExecQuery _
 ("SELECT * FROM Win32_TimeZone")
For Each objTimeZone in colTimeZone
 Wscript.Echo "Offset: "& objTimeZone.Bias
Next

Conversione di una data in un valore UTC

Dopo aver determinato l'offset GMT, è necessario convertire una data standard, ad esempio 10/18/2002 in una data UTC. Per convertire una data standard in una data UTC, è possibile usare funzioni di data VBScript come Anno, Mese e Giorno per isolare i singoli componenti che costituiscono una data UTC. Dopo aver ottenuto singoli valori per questi componenti, è possibile concatenarli nello stesso modo di qualsiasi altro valore stringa. Le date UTC vengono considerate come stringhe perché l'offset GMT deve essere accodato alla fine. Se la data è stata vista come numero, questo valore:

20011018113047.000000-480

Verrebbe erroneamente considerato come un'equazione matematica (parentesi aggiunte per maggiore chiarezza):

(20011018113047.000000) - (480)

Ad esempio, nella data 10/18/2002 i singoli componenti sono:

  • Anno: 2002
  • Mese: 10
  • Giorno: 18

Lo script deve combinare questi tre valori, la stringa "113047.0000000" (che rappresenta l'ora, inclusi i millisecondi) e l'offset GMT per derivare una data UTC. Ad esempio, (parentesi aggiunte di nuovo per maggiore chiarezza):

(2002) & (10) & (18) & (113047.000000) & (-480)

Nota

È possibile usare le funzioni VBScript Hour, Minute e Second per convertire la parte relativa all'ora di una data UTC. Pertanto, un'ora come le 11:30:47 di A.M. verrebbe convertita in 113047.

 

C'è un fattore di complicazione. Il mese deve assumere posizioni 5 e 6 nella stringa; il giorno deve assumere posizioni 7 e 8. Questo non è un problema con il mese 10 e il giorno 18. Ma come si ottiene il 5 luglio (mese 7, giorno 5) per riempire le posizioni necessarie? La risposta consiste nell'aggiungere uno zero iniziale a ogni valore, modificando così da 7 a 07 e da 5 a 05.

A tale scopo, usare la funzione VBScript Len per controllare la lunghezza (numero di caratteri) nel mese e nel giorno. Se la lunghezza è 1 (vale a dire che è presente un solo carattere), aggiungere uno zero iniziale. Così:

If Len(dtmMonth) = 1 Then
    dtmMonth = "0" & dtmMonth
End If

Esempio

Nell'esempio di VBScript seguente la data corrente viene convertita in una data UTC.

strComputer = "."
Set objSWbemServices = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colTimeZone = objSWbemServices.ExecQuery _
 ("SELECT * FROM Win32_TimeZone")
For Each objTimeZone in colTimeZone
 strBias = objTimeZone.Bias
Next

dtmCurrentDate = Date
dtmTargetDate = Year(dtmCurrentDate)

dtmMonth = Month(dtmCurrentDate)
If Len(dtmMonth) = 1 Then
 dtmMonth = "0" & dtmMonth
End If

dtmTargetDate = dtmTargetDate & dtmMonth

dtmDay = Day(dtmCurrentDate)
If Len(dtmDay) = 1 Then
 dtmDay = "0" & dtmDay
End If

dtmTargetDate = dtmTargetDate & dtmDay & "000000.000000"
dtmTargetDate = dtmTargetDate & Cstr(strBias)

Il codice VBScript seguente campiona l'offset GMT e quindi converte una data corrente specificata (in questo caso, 18/18/2002) in formato ora UTC. Dopo la conversione della data, tale valore viene utilizzato per eseguire ricerche in un computer e restituisce un elenco di tutte le cartelle create dopo il 18/18/2002.

strComputer = "."
Set objSWbemServices = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colTimeZone = objSWbemServices.ExecQuery _
 ("SELECT * FROM Win32_TimeZone")
For Each objTimeZone in colTimeZone
 strBias = objTimeZone.Bias
Next

dtmCurrentDate = "10/18/2002"
dtmTargetDate = Year(dtmCurrentDate)

dtmMonth = Month(dtmCurrentDate)
If Len(dtmMonth) = 1 Then
 dtmMonth = "0" & dtmMonth
End If

dtmTargetDate = dtmTargetDate & dtmMonth

dtmDay = Day(dtmCurrentDate)
If Len(dtmDay) = 1 Then
 dtmDay = "0" & dtmDay
End If

dtmTargetDate = dtmTargetDate & dtmDay & "000000.000000"
dtmTargetDate = dtmTargetDate & Cstr(strBias)

Set colFolders = objSWbemServices.ExecQuery _
 ("SELECT * FROM Win32_Directory WHERE CreationDate < '" & _
 dtmtargetDate & "'")
For Each objFolder in colFolders
 Wscript.Echo objFolder.Name
Next

Nell'esempio di codice VBScript seguente vengono visualizzate le impostazioni per le istanze di Win32_TimeZone.

Dim arDayOrWeek(7)
arDayOrWeek(0) = "Sunday"
arDayOrWeek(1) = "Monday"
arDayOrWeek(2) = "Tuesday"
arDayOrWeek(3) = "Wednesday"
arDayOrWeek(4) = "Thursday"
arDayOrWeek(5) = "Friday"
arDayOrWeek(6) = "Saturday"

Dim arMonth(13)
arMonth(1) = "January"
arMonth(2) = "Feburary"
arMonth(3) = "March"
arMonth(4) = "April"
arMonth(5) = "May"
arMonth(6) = "June"
arMonth(7) = "July"
arMonth(8) = "August"
arMonth(9) = "September"
arMonth(10) = "October"
arMonth(11) = "November"
arMonth(12) = "December"

strComputer = "."
wmiQuery = "Select * from Win32_TimeZone"
Set objWMIService = GetObject("winmgmts:\\" & _
    strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery(wmiQuery)

For Each objItem in colItems
    WScript.Echo "Day of Week setting is: " _
        & objItem.dayLightDayOfWeek _
        & " which is: " & arDayOrWeek(objItem.DaylightDayOfWeek)
    WScript.Echo "Hour: " & objItem.DaylightHour 
    WScript.Echo "Month: " & objItem.DaylightMonth _
        & " which is: " & arMonth(objItem.DaylightMonth )
    WScript.Echo "Description: " & objItem.DaylightName 
    WScript.Echo "The transition from DLS to Standard occurs: " 
    WScript.Echo "Day of Week setting is: " _
        & objItem.standardDayOfWeek _
        & " which is: " & arDayOrWeek(objItem.DaylightDayOfWeek)
    WScript.Echo "Hour: " & objItem.StandardHour 
    WScript.Echo "Month: " & objItem.StandardMonth _ 
        & " which is: " & arMonth(objItem.StandardMonth )
    WScript.Echo "Description: " & objItem.StandardName 
Next

Requisiti

Requisito Valore
Client minimo supportato
Windows Vista
Server minimo supportato
Windows Server 2008
Spazio dei nomi
Root\CIMV2
MOF
CIMWin32.mof
DLL
CIMWin32.dll

Vedi anche

CIM_Setting

Classi del sistema operativo

SWbemDateTime

Formato data e ora

Attività WMI: date e ore