gpt4 book ai didi

datetime - 将时间转换为 UTC vbScript

转载 作者:行者123 更新时间:2023-12-02 19:09:47 24 4
gpt4 key购买 nike

我有以下函数,可以很好地将当前时间转换为 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

但是,我认为这不能充分处理 future 或历史日期到 UTC 的转换,因为该函数需要知道正在转换的日期时服务器时区的偏移量,以及是否不是在夏令时期间。

我该如何解决这个问题?

我在带有 IIS7.5 的 Windows 服务器上使用 vbScript/Classic ASP

澄清一下,这与格式化日期无关。这一切都是为了将​​历史日期从服务器时区转换为 UTC。在夏令时期间,如果我尝试转换标准时间中发生的日期时间,偏移量将减少 60 分钟。

例如:

假设今天,2013-02-19(非夏令时),我想将时间戳从 2008-06-05(夏令时期间)从 PDT(我的服务器时区)转换为 UTC 。在我的函数中使用该方法将得到一个与正确值相差 60 分钟的值(因为当前时间是 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。

关于datetime - 将时间转换为 UTC vbScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14949706/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com