我有类似以下的日期:

2014年5月30日11:21:37

我的用户将输入该数据并具有自己的时区。可能是“美国/东部”,“美国/太平洋新”等。我想将时间转换为UTC,但我不能。有办法吗?

我正在使用node,我尝试了momentJS并阅读以下内容:

http://momentjs.com/docs/

http://momentjs.com/guides/

Convert date to another timezone in JavaScript

如何从其他时区转换为UTC?

编辑

我已经尝试过这些:

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

在上面的示例中,dateString是字符串日期。我想将时区设置为“美国/东部”并将其转换为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"

请注意,我使用了与输入格式相同的输出格式-如果愿意,可以更改此格式。

如果您愿意,也可以一行完成全部操作:
var s = moment.tz(input, fmt, zone).utc().format(fmt);

另外,请注意,我使用的是Area/Locality格式(America/New_York),而不是较旧的US/Eastern样式。应该优先考虑,因为US/*只是为了向后兼容而已。

另外,永远不要使用US/Pacific-New。现在它与US/Pacific相同,它们都都指向America/Los_Angeles。有关此历史的更多信息,请访问see the tzdb sources

关于node.js - moment.js将日期时间从另一个时区转换为UTC,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37534398/

10-12 01:01