Javascript 日期对象和ISO日期对象返回不同的日期
我需要捕获一个日期值,将其解析为一个ISODate,然后查询一个存储有日期值的对象的mongoDB集合。查询检查事件日期之间是否相等,并将其与确定日期是否在周末的函数进行匹配。一切正常,但是如果日期落在星期一,结果也会出来 我注意到date对象向后移动了一天,我们使用toISOString: 日期对象Javascript 日期对象和ISO日期对象返回不同的日期,javascript,node.js,mongodb,datetime,mongodb-query,Javascript,Node.js,Mongodb,Datetime,Mongodb Query,我需要捕获一个日期值,将其解析为一个ISODate,然后查询一个存储有日期值的对象的mongoDB集合。查询检查事件日期之间是否相等,并将其与确定日期是否在周末的函数进行匹配。一切正常,但是如果日期落在星期一,结果也会出来 我注意到date对象向后移动了一天,我们使用toISOString: 日期对象 Mon Apr 18 2016 00:00:00 GMT+0100 (BST) toISOString: 2016-04-17T23:00:00.000Z { "_id" : Obje
Mon Apr 18 2016 00:00:00 GMT+0100 (BST)
toISOString:
2016-04-17T23:00:00.000Z
{
"_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
}
注意,现在的日期是17号
数据库中也存在这种不一致:
2016-04-17T23:00:00.000Z
{
"_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 },
当我查询DB仅在周末返回事件时,这就成了一个问题,因为周一的时间正在流逝。您有两个不同的时区:
返回UTC+00:00格式的日期,该日期由toISOString()
末尾的2016-04-17T23:00:00.000Z
标志指示Z
- 您的日期对象
(可能使用2016年4月18日星期一00:00:00 GMT+0100(英国夏令时)
)在您当前的时区中格式化:GMT+01:00toString()
阅读有关的更多信息。您有两个不同的时区:
返回UTC+00:00格式的日期,该日期由toISOString()
末尾的2016-04-17T23:00:00.000Z
标志指示Z
- 您的日期对象
(可能使用2016年4月18日星期一00:00:00 GMT+0100(英国夏令时)
)在您当前的时区中格式化:GMT+01:00toString()
阅读更多有关的信息。键是
BST
。BST中第X天的午夜是UTC(GMT)中第X-1天的23:00。这只是一个时区差异。它是相同的日期,但显示有两个不同的时区。键是BST
。BST中第X天的午夜是UTC(GMT)中第X-1天的23:00。这只是一个时区差异。它是相同的日期,但显示有两个不同的时区。好的,这是有意义的。第二个日期是我真正需要的日期,有没有办法抵消UTC时区?@RhysEdwards您需要一个帮助函数,或者最好使用矩
库。好的,这是有意义的。第二个日期是我真正需要的日期,有没有办法抵消UTC时区?@RhysEdwards您需要一个助手函数,或者最好使用moment
库。