为什么这些日期会在从MongoDb获取后导致“无效日期”?

时间:2014-02-21 16:10:22

标签: javascript node.js mongodb mongoose momentjs

我只想添加一天,然后使用Moment.Js在新的一天代表12:00 AM。但是,每当我执行此操作然后保存它时,MongoDB会将日期返回为Invalid Date ...为什么?

 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 个答案:

答案 0 :(得分: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"

VS

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

请注意,有些浏览器接受前者,例如Chrome,但它不是标准的,因此会像往常一样痛苦。

Firefox在日期上相当严格。