2016-07-30 31 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中選擇午夜。

相關問題