UTC Time Assignment in VBScript

一个人想着一个人 提交于 2020-06-25 08:39:48

问题


Does anyone have a simple means in VBScript to get the current time in UTC?

Thanx, Chris


回答1:


I use a simple technique

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

More info on SWbemDateTime

If you wanted to convert UTC back to local time do this:

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



回答2:


There are lots of examples out there. If you can access the registry this one will work for you:

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)

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




回答3:


You can get time bias from Win32_TimeZone WMI class.

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



回答4:


With SetVarDate the offset change due to transition to daylight saving time (from +060 to +120) occurred one hour too soon. The RegRead(HKLM\..\ActiveTimeBias) method was spot-on. If reproduction is desired, just put the pc clock on a time just before and just after the expected transition time and check the results.




回答5:


Here is an example that formats the date to UTC as well. Note that you cannot format to a millesecond level with this.

Dim formattedDate 
Dim utcDate

Set objShell = WScript.CreateObject("WScript.Shell")

Set dateTime = CreateObject("WbemScripting.SWbemDateTime")

dateTime.SetVarDate(now())
utcDate = dateTime.GetVarDate(false) 

wscript.echo  "Local Time:  " & dateTime
wscript.echo  "UTC Time: " & utcDate

formattedDate = DatePart("yyyy",utcDate) & "-" & Right("0" & DatePart("m",utcDate), 2) & "-" & Right("0" & DatePart("d",utcDate), 2) 
    & "T" & Right("0" & DatePart("h",utcDate), 2) & ":" & Right("0" & DatePart("n",utcDate), 2) 
    & ":" & Right("0" & DatePart("s",utcDate), 2) & ".000+0000"

wscript.echo formattedDate

'results in a format that looks like this: 1970-01-01T00:00:00.000+0000

set dateTime=Nothing
set objShell=Nothing


来源:https://stackoverflow.com/questions/15887700/utc-time-assignment-in-vbscript

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!