时刻时区.js使用时区获取特定日期的 UTC 偏移量



我让用户输入该日期的日期和时区(例如"美国/洛杉矶"(,我想将其转换为UTC,但要做到这一点,我需要该日期时间的UTC偏移量。

如果我已经知道 UTC 日期,我可以轻松地将日期转换为时区的偏移量,但我需要相反的方式......

由于夏令时,utc 偏移量可能会根据日期而变化,因此我需要一种方法来输入日期和时区,并使用它从 UTC 取回偏移量。

了解最近从 PST 到 PDT 的切换 3 月 11 日凌晨 2 点,我尝试使用

var tzOffset = moment.tz("3/11/2018 3:00 AM", "America/Los_Angeles").utcOffset();
document.write('utc offset is : ' + tzOffset + '<br/>') ;

但是当正确答案是 480 时,它会给出 420

如果我像这样使用 parseZone,我可以得到正确答案 420:

var tzOffset2 = moment.parseZone("3/11/2018 3:00 AM -07:00").utcOffset();
document.write('utc offset2 is : ' + tzOffset2 + '<br/>') ;

但这意味着我需要已经知道我试图找到的 -7 偏移量......

那么如何找到特定日期/时间(如"3/11/2018 3:00 AM"(和时区(如"美国/Los_Angeles"(的 utcOffset? 谢谢

您的输入不是moment(String)识别的 ISO 8601 或 RFC 2822 格式,因此您必须使用moment(String, String)将格式指定为第二个参数(请注意,如文档所述:moment.tz构造函数采用与moment构造函数相同的所有参数,但使用最后一个参数作为时区标识符。

您的代码可能如下所示:

var tzOffset = moment.tz("3/11/2018 3:00 AM", "D/M/YYYY h:mm A", "America/Los_Angeles").utcOffset();
document.write('utc offset is : ' + tzOffset + '<br/>') ;
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.14/moment-timezone-with-data-2012-2022.min.js"></script>

最新更新