2016-07-30 95 views
0

我想解析一个日期字符串,并在UTC区域的日期开始时将相应的unix时间返回到午夜。但是,我的node.js不断在我的时区返回该日期开始的unixtime。解析node.js中的日期:moment.utc()没有返回正确的UTC unix时间

我在做什么错?这应该打印1440633600到控制台,但它打印一个数字对应于我的时区unix时间,而不是UTC。

var moment = require('moment'); 
    var datestring = "August 27 2015"; 
    var unixDate = new Date(datestring); 
    var myDate = moment.utc(unixDate); 
    console.log(myDate.format('X')); 

“datestring”不会总是包含一个“Z”末(表示UTC),但有时可能,所以解析之前,我不能只加一个“Z”。一定有什么是我丢失的东西在这里...

回答

1

TL; DR:

var myDate = moment.utc(datestring, 'MMMM DD YYYY');

的解释:

var unixDate = new Date(datestring);datestring设置为"August 27 2015"将设置unixDate到相应于2015年8月27日午夜时间的时间戳。

随后,var myDate = moment.utc(unixDate)myDate设置为moment设置为同一时间的对象。由于您发送的是时间戳而不是日期,因此没有理由针对时区进行调整。由于您根据时区中的时间生成了时间戳,因此moment可以看到。

一个问题是将该行更改为var myDate = moment.utc(datestring, 'MMMM DD YYYY');。由于moment将获得一个字符串来处理而不是UNIX时间戳,因此它将在2015年8月27日的UTC中选择午夜。

相关问题