2014-02-21 29 views
2

我只想添加一天,然後在新的一天中使用Moment.Js表示12:00 AM。但是,只要我這樣做,然後保存它,MongoDB返回日期爲Invalid Date ...爲什麼?爲什麼這些日期在從MongoDb獲取後導致「無效日期」?

date = new Date(Date.UTC(2000, 2, 13)); 
date = moment.utc(date); 
date = date.add(1, 'd'); 

保存前,該日期看起來是這樣的:date: Sun Feb 13 2000 16:00:00 GMT-0800 (PST)

的日期的樣子在我的數據庫:2000-02-14 00:00:00.000Z

但是,它顯示爲無效取出時從數據庫中:

{ 
    date: "Invalid Date" 
    day: "02/13/2000" 
    full_date: "02/13/2000 24" 
    hour: "24" 
} 

而且,這樣的構造所有的日子將導致Invalid Dates

回答

1

2000-02-14 00:00:00.000Z在JavaScript中不是有效的日期格式。

ECMA Date Time String Format

YYYY-MM-DDTHH:mm:ss.sssZ 

參考date

它在時間元素中缺少T

試試這個在您的控制檯:

>> (new Date("2000-02-14 00:00:00.000Z")).toString() 
<< "Invalid Date" 

>> (new Date("2000-02-14T00:00:00.000Z")).toString() 
<< "Mon Feb 14 2000 01:00:00 GMT+0100 (CET)" 

注意,一些瀏覽器接受前者,如瀏覽器,但它是非標準,並通過如下像平常一樣痛苦。

Firefox在日期上相當嚴格。

+0

謝謝,但爲什麼不Moment.js返回有效的日期格式?或者,如何從Moment獲得有效的日期格式? – ac360

+1

@ ac360:ERR。我的評論變得一團糟。很快:我不知道Moment並且亂碼了 – user13500

+1

你知道嗎,我的MongoDB中的所有日期記錄都不包含'T',它們看起來類似:2000-01-01 02:00:00.000Z。然而,只有在午夜的日期記錄:2000-01-02 00:00:00.000Z返回爲無效日期 – ac360