Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 日期对象和ISO日期对象返回不同的日期_Javascript_Node.js_Mongodb_Datetime_Mongodb Query - Fatal编程技术网

Javascript 日期对象和ISO日期对象返回不同的日期

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

我需要捕获一个日期值,将其解析为一个ISODate,然后查询一个存储有日期值的对象的mongoDB集合。查询检查事件日期之间是否相等,并将其与确定日期是否在周末的函数进行匹配。一切正常,但是如果日期落在星期一,结果也会出来

我注意到date对象向后移动了一天,我们使用toISOString:

日期对象

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仅在周末返回事件时,这就成了一个问题,因为周一的时间正在流逝。

您有两个不同的时区:

  • toISOString()
    返回UTC+00:00格式的日期,该日期由
    2016-04-17T23:00:00.000Z
    末尾的
    Z
    标志指示
  • 您的日期对象
    2016年4月18日星期一00:00:00 GMT+0100(英国夏令时)
    (可能使用
    toString()
    )在您当前的时区中格式化:GMT+01:00
这就是为什么你在1小时内得到这个差异。

阅读有关的更多信息。

您有两个不同的时区:

  • toISOString()
    返回UTC+00:00格式的日期,该日期由
    2016-04-17T23:00:00.000Z
    末尾的
    Z
    标志指示
  • 您的日期对象
    2016年4月18日星期一00:00:00 GMT+0100(英国夏令时)
    (可能使用
    toString()
    )在您当前的时区中格式化:GMT+01:00
这就是为什么你在1小时内得到这个差异。

阅读更多有关的信息。

键是
BST
。BST中第X天的午夜是UTC(GMT)中第X-1天的23:00。这只是一个时区差异。它是相同的日期,但显示有两个不同的时区。键是
BST
。BST中第X天的午夜是UTC(GMT)中第X-1天的23:00。这只是一个时区差异。它是相同的日期,但显示有两个不同的时区。好的,这是有意义的。第二个日期是我真正需要的日期,有没有办法抵消UTC时区?@RhysEdwards您需要一个帮助函数,或者最好使用
库。好的,这是有意义的。第二个日期是我真正需要的日期,有没有办法抵消UTC时区?@RhysEdwards您需要一个助手函数,或者最好使用
moment
库。