加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

datetime – 将时间转换为UTC vbScript

发布时间:2020-12-16 07:00:23 所属栏目:asp.Net 来源:网络整理
导读:我有以下功能,可以很好地将当前时间转换为UTC时间. Function toUtc(byVal dDate) Dim oShell : Set oShell = CreateObject("WScript.Shell") toUtc = dateadd("n",oShell.RegRead("HKEY_LOCAL_MACHINESystemCurrentControlSetControlTimeZoneInformation
我有以下功能,可以很好地将当前时间转换为UTC时间.

Function toUtc(byVal dDate)
    Dim oShell : Set oShell = CreateObject("WScript.Shell")
    toUtc = dateadd("n",oShell.RegRead("HKEY_LOCAL_MACHINESystemCurrentControlSetControlTimeZoneInformationActiveTimeBias"),cDate(dDate))
End Function

但是,我认为这不能充分处理将来或历史日期转换为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,我都需要使用该代码.

解决方法

这是我最终在@ AardVark71的建议下实施的解决方案.

我把它放在我的func.asp文件中:

<script language="javascript" runat="server">
    function toUtcString(d) {
        var dDate = new Date(d);
        return Math.round(dDate.getTime() / 1000);
    };
</script>

它输出一个时间戳值.然后从经典的asp代码中的任何地方,我都可以这样做:

response.Write DateAdd("s",toUtcString(cDate("11/11/2012 06:25 PM")),"01/01/1970 00:00:00") 'expect 11/11/2012 10:25:00 PM gmt/utc time
response.Write DateAdd("s",toUtcString(cDate("06/11/2012 06:25 PM")),"01/01/1970 00:00:00") 'expect  6/11/2012  9:25:00 PM gmt/utc time

这(我相信)很简单,它在DST中产生预期值和完全因子.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读