我有以下功能,可以很好地将当前时间转换为UTC时间.
Function toUtc(byVal dDate)
Dim oShell : Set oShell = CreateObject("WScript.Shell")
toUtc = dateadd("n", oShell.RegRead("HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation\ActiveTimeBias"), cDate(dDate))
End Function
Run Code Online (Sandbox Code Playgroud)
但是,我认为这不能充分处理将来或历史日期转换为UTC,因为该函数需要知道转换日期时服务器时区的偏移量,以及它是否是在夏令时期间与否.
我怎么能绕过这个?
我在IIS7.5的Windows服务器上使用vbScript/Classic ASP
为了澄清,这与格式化日期无关.它是关于从服务器时区转换为UTC历史日期的全部内容.在夏令时期间,如果我尝试转换标准时间内发生的日期时间,则偏移量将减少60分钟.
例如:
让我们说今天,2013-02-19(非夏令时),我想从2008年6月5日(在夏令时期间)将时间戳从PDT(我的服务器时区)转换为UTC.使用我函数中的方法将给出一个与正确值相差60分钟的值(因为CURRENT时间是PST(不是PDT),该历史日期的偏移量将不正确).
换句话说,输入日期的时区偏移可以是UTC-7或UTC-8,具体取决于是否在该特定日期观察到DST.我需要为输入日期计算正确的UTC日期,无论是否在当前日期观察到DST,我都需要使用该代码.