我有一个允许用户创建事件的UI。用户创建此事件时,他们选择日期(和时间),并分别为事件位置选择时区(例如,“ America / New_York”)。
我需要使用日期(包括时间)和选定的时区(字符串)来创建UTC日期。我不确定该怎么做。
我考虑过使用getTimezoneOffset,但是根据一年中的时间(英国夏令时等),此更改不会改变。
更新。我的解释不太清楚,因此这里有更多详细信息:
用户选择事件的日期和时间为“ Jan 01 2017 07:00:00”。
然后,他们选择“ America / New_York”的时区。它发生在纽约的早上7点,但我在英国。
当我做:const formatDate = moment.tz( new Date('Jan 01 2017 07:00:00'), 'America/New_York' ).format(); //returns '2017-01-01T02:00:00-05:00'
如果我使用以下方法将纽约的日期转换为我的本地日期:new Date( formatDate ); // returns 'Sun Jan 01 2017 07:00:00 GMT+0000 (GMT)'
我希望它返回本地日期和时间“ Sun Jan 01 2017 12:00:00 GMT + 0000(GMT)”。
最佳答案
从docs:
如果您想要一个实际的时区-在特定位置的时间,例如
America/Los_Angeles
,请考虑moment-timezone。
这表明该功能不是Moment.js本身内置的,但另一个库应该完成该功能:
var newYork = moment.tz("2014-06-01 12:00", "America/New_York");
var losAngeles = newYork.clone().tz("America/Los_Angeles");
var london = newYork.clone().tz("Europe/London");
newYork.format(); // 2014-06-01T12:00:00-04:00
losAngeles.format(); // 2014-06-01T09:00:00-07:00
london.format(); // 2014-06-01T17:00:00+01:00
请注意,您仍应将命名的时区存储在另一列中,因为无法从MySQL中存储的日期中扣除它。
关于javascript - 使用时区信息将Javascript日期转换为UTC,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44303153/