我需要捕获日期值,将其解析为ISODate,然后查询存储具有日期值的对象的mongoDB集合。查询检查事件日期之间的相等性,并将其与确定日期是否属于周末的函数进行匹配。一切正常,但是如果日期是星期一,它也会在结果上得到实现。
我注意到的是当我们使用toISOString时,日期对象会移回一天:
日期对象
Mon Apr 18 2016 00:00:00 GMT+0100 (BST)
toISOString:
2016-04-17T23:00:00.000Z
注意它现在有17日作为日期?
这种不一致也存在于数据库中:
{
"_id" : ObjectId("56fe91afceb044f551dbffce"),
"url" : "http://www.timeoutshanghai.com/features/Blog-Food__Drink/35271/Baristas-showcase-latte-art-in-Shanghai.html",
"title" : "Baristas showcase latte art in Shanghai - Blog - Time Out - Shanghai",
"selectedDate" : ISODate("2016-04-17T23:00:00Z"),
"__v" : 0
}
这应该给selectedDate" : ISODate("2016-04-17T23:00:00Z")
但是,如果我们将集合记录到控制台,则日期将作为星期一返回:
{ _id: 56fe91c5ceb044f551dbffcf,
url: 'http://www.timeoutshanghai.com/features/Blog-Food__Drink/35271/Baristas-showcase-latte-art-in-Shanghai.html',
title: 'Baristas showcase latte art in Shanghai - Blog - Time Out - Shanghai',
selectedDate: Mon Apr 18 2016 00:00:00 GMT+0100 (BST),
__v: 0 },
当我查询数据库只返回周末事件时,这会成为一个问题,因为星期一正在滑倒。
答案 0 :(得分:4)
您有2个不同的时区:
toISOString()
返回格式为UTC + 00:00的日期,该日期由末尾Z
的{{1}}标志指示。 2016-04-17T23:00:00.000Z
(可能使用Mon Apr 18 2016 00:00:00 GMT+0100 (BST)
格式化)格式化为您当前的时区:GMT + 01:00。这就是你在1小时内得到这种差异的原因 详细了解iso date format。