momentjs将datetime从另一个时区转换为UTC

我有如下的date:

05/30/2014 11:21:37 AM

我的用户将input这些数据并拥有自己的时区。 可能是像“美国/东部”,“美国/太平洋新”等,我想把时间转换为UTC,但我不能。 有没有办法做到这一点?

我正在使用节点,我尝试了momentJS并阅读下面:

http://momentjs.com/docs/

http://momentjs.com/guides/

在JavaScript中将date转换为另一个时区

我如何从不同的时区转换为UTC?

编辑

我试过这些:

moment().utc(0).format('YYYY-MM-DD HH:mm Z') moment.tz(dateString, "US/Eastern").format() 

在上面的例子中, dateString是stringdate。 我想将时区设置为“美国/东部”并将其转换为UTC。

 // your inputs var input = "05/30/2014 11:21:37 AM" var fmt = "MM/DD/YYYY h:mm:ss A"; // must match the input var zone = "America/New_York"; // construct a moment object var m = moment.tz(input, fmt, zone); // convert it to utc m.utc(); // format it for output var s = m.format(fmt) // result: "05/30/2014 3:21:37 PM" 

请注意,我使用与input格式相同的输出格式 – 如果您愿意,可以改变它。

如果你愿意,你也可以在一行中完成:

 var s = moment.tz(input, fmt, zone).utc().format(fmt); 

此外,请注意,我使用了Area / Locality格式( America/New_York ),而不是旧的US/Eastern格式。 这应该是最好的,因为美国/ *只是出于向后兼容的目的。

此外, US/Pacific-New不应该被使用。 现在就像US/Pacific ,都指向America/Los_Angeles 。 有关这方面的更多信息, 请参阅tzdb源文件 。