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源文件 。