我让用户在该日期输入日期和时区(例如" 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;?感谢
答案 0 :(得分:2)
您的输入不是moment(String)
识别的ISO 8601或RFC 2822格式,因此您必须使用moment(String, String)
将格式指定为第二个参数(请注意,docs states: moment.tz
构造函数采用与moment
构造函数相同的所有参数,但使用最后一个参数作为a time zone identifier。)
您的代码可能如下所示:
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;