2013-04-08 13 views

Odpowiedz

2

Istnieje wiele przykładów tam. Jeśli masz dostęp rejestr ten będzie pracować dla Ciebie:

od = now() 
set oShell = CreateObject("WScript.Shell") 
atb = "HKEY_LOCAL_MACHINE\System\CurrentControlSet\" &_ 
    "Control\TimeZoneInformation\ActiveTimeBias" 
offsetMin = oShell.RegRead(atb) 
nd = dateadd("n", offsetMin, od) 
Response.Write("Current = " & od & "<br>UTC = " & nd) 

Od http://classicasp.aspfaq.com/date-time-routines-manipulation/how-do-i-convert-local-time-to-utc-gmt-time.html

+0

Co powiesz na sekundy? Próbowałem zmienić "n" na "s" i nie zmieniło to formatu ... – Chris

1

Można uzyskać nastawienie czasu od Win32_TimeZoneWMI klasie.

myDate = "9/4/2013 17:23:08" 
For Each objItem In GetObject(_ 
    "winmgmts:\\.\root\cimv2").ExecQuery(_ 
    "Select * from Win32_TimeZone") 
    bias = objItem.Bias 
Next 
myDate = DateAdd("n", bias, myDate) 
WScript.Echo myDate 
12

używam prostą techniką

Set dateTime = CreateObject("WbemScripting.SWbemDateTime")  
dateTime.SetVarDate (now()) 
wscript.echo "Local Time: " & dateTime 
wscript.echo "UTC Time: " & dateTime.GetVarDate (false) 

More info on SWbemDateTime

Jeśli chcesz przekonwertować UTC powrotem do czasu lokalnego to zrobić:

Set dateTime = CreateObject("WbemScripting.SWbemDateTime") 
     dateTime.SetVarDate now(),false REM Where now is the UTC date 
     wscript.echo cdate(dateTime.GetVarDate (true)) 
+0

Czy jest obecny w każdej instalacji systemu Windows? – rcdmk

0

Z SetVarDate offsetowej zmiany należytym przejście na czas letni (z +060 na +120) nastąpiło o godzinę wcześniej. Metoda RegRead (HKLM \ .. \ ActiveTimeBias) była spot-on. Jeśli pożądana jest reprodukcja, po prostu umieść zegar pc na czas tuż przed i tuż po spodziewanym czasie przejścia i sprawdź wyniki.

Powiązane problemy