我是一名新开发人员,我已经坚持了一段时间,如何在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等效。我错过了什么?
答案 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");