时刻js,将EST字符串转换为UTC

时间:2016-05-08 00:46:40

标签: javascript momentjs

我是一名新开发人员,我已经坚持了一段时间,如何在JS时刻将以下日期转换为UTC版本(不需要utc前缀/后缀)?

05/03/2016 16:00

我试过了:

var b = "05/03/2016 16:00";
moment.utc(b).format();
"2016-05-03T16:00:00Z"

我希望最终结果与b完全相同,但它的UTC等效。我错过了什么?

2 个答案:

答案 0 :(得分:3)

您错过了输入格式输出格式

  • 如果没有输入格式,您的日期可能会被解释为5月3日或3月5日,具体取决于文化。

  • 如果没有输出格式,则无法知道您想要的字符串类型,因此默认为完整的ISO8601扩展格式。

您还错过了转化。如果输入是本地时间而您想要UTC,则应使用moment(...)对其进行解析,然后使用.utc()函数将其转换为UTC。

总结:

moment(b, 'MM/DD/YYYY HH:mm').utc().format('MM/DD/YYYY HH:mm')

另请注意,它是从运行代码的本地时间转换而来的。在你的问题中,你问过EST。如果您当地的时区不是其他地方,那么EST将不适用于上述时区。您需要使用moment-timezone加载项来执行以下操作:

moment(b, 'MM/DD/YYYY HH:mm', 'America/New_York').utc().format('MM/DD/YYYY HH:mm')

答案 1 :(得分:1)

moment(b).utc();

将其更改为utc时间,您可能仍需要向format()添加参数以确保它显示您最初编写它的方式。

moment(b).utc().format("MM/DD/YYYY HH:mm");