我有一个允许用户创建事件的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/

10-12 12:29
查看更多