日期对象和ISO日期对象返回不同的日期
Date object and ISO date object return different dates
我需要捕获一个日期值,将其解析为ISODate,然后查询存储具有日期值的对象的mongoDB集合。查询检查事件的日期是否相等,并将其与确定日期是否在周末的函数相匹配。一切都很好,但如果日期是星期一,结果也会出来。
我注意到,当我们使用ISOString:时,日期对象会向后移动一天
日期对象
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 },
当我查询DB只在周末返回事件时,这就成了一个问题,因为周一的事件正在流逝。
您有两个不同的时区:
toISOString()
返回格式为UTC+00:00的日期,由2016-04-17T23:00:00.000Z
末尾的Z
标志表示- 您的日期对象
Mon Apr 18 2016 00:00:00 GMT+0100 (BST)
(可能使用toString()
格式化)的格式为当前时区:GMT+01:00
这就是为什么你能在1小时内得到这种差异
阅读有关iso日期格式的更多信息。
相关文章:
- 比较从函数和生成的日期对象
- 如何获得一个只有时间的moment.js日期对象
- 使用moment.js获取时间分区的偏移日期对象
- 获取本地时间的JS日期,日期对象中没有时区详细信息
- 将某个时间格式转换为日期对象
- 正在使用日期字符串初始化javascript日期对象
- 在CouchDB Map函数中发出日期时-对日期对象调用的内容
- 如何将事件的日期放入fullcalendar中的日期对象中
- 为什么在JavaScript中可以从另一个日期对象中减去日期对象
- 理解日期对象接收参数时的getDay()方法
- JS日期对象setUTCMonth()将月份增加2
- 时间-日期对象JavaScript getUTCMilliseconds
- 将带有 AM/PM 的日期字符串转换为 javascript 日期对象
- Javascript 测试中的假日期对象
- 转换/格式化日期对象
- 如何在发布JavaScript日期对象时保留时区偏移量
- JS日期对象在某个范围内的百分比
- 无法从日期对象javascript获取日期和月份
- javascript日期对象未返回正确的日期
- Javascript日期对象-JSFiddle中的不同值