moment-timezone.js获取具有时区的特定日期的utc偏移量

时间:2018-05-25 05:30:55

标签: momentjs

我让用户在该日期输入日期和时区(例如" America / Los Angeles")并且我想将其转换为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/>') ;

但是当正确答案是420

时,它会给出480

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

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

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

那么如何找到特定日期/时间的utcOffset,如&#34; 3/11/2018 3:00 AM&#34;和时区一样&#34; America / Los_Angeles&#34;?感谢

1 个答案:

答案 0 :(得分:2)

您的输入不是moment(String)识别的ISO 8601或RFC 2822格式,因此您必须使用moment(String, String)将格式指定为第二个参数(请注意,docs states: moment.tz构造函数采用与moment构造函数相同的所有参数,但使用最后一个参数作为a time zone identifier

您的代码可能如下所示:

&#13;
&#13;
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/>') ;
&#13;
<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>
&#13;
&#13;
&#13;