66

我有一个 mongo 数据库设置。在 mongoDb 中创建一个新的日期对象以 ISO 格式创建一个日期对象,例如:ISODate("2012-07-14T00:00:00Z")

我正在使用 node.js 连接到 mongo 数据库并查询数据库。当我在 javascript 中创建一个新的日期对象 ( new Date()) 时,它会创建一个 javascript 日期对象,例如:Wed Mar 06 2013 14:49:51 GMT-0600 (CST)

有没有办法在 javascript 中创建 ISO 日期对象,以便我可以将对象直接发送到 mongoDb 并执行日期查询

我能够在 mongoDb 中执行以下查询

db.schedule_collection.find({
  start_date: { '$gte': new Date(2012, 01, 03, 8, 30) }
})

但是当我从节点发送 javascript 日期对象时无法执行

mongodb 食谱提供了一个 python 示例来使用 datetime 模块查询 mongo 数据库,但没有提供任何使用 javascript 的示例。

任何帮助表示赞赏。提前谢谢你

4

5 回答 5

102

尝试使用ISO 字符串

var isodate = new Date().toISOString()

另请参阅:MDN 上的方法定义

于 2013-03-06T21:01:59.797 回答
17

试试下面:

var temp_datetime_obj = new Date();

collection.find({
    start_date:{
        $gte: new Date(temp_datetime_obj.toISOString())
    }
}).toArray(function(err, items) { 
    /* you can console.log here */ 
});
于 2014-08-17T15:39:28.413 回答
14

在节点中,Mongo 驱动程序会给你一个 ISO 字符串,而不是对象。(例如:)Mon Nov 24 2014 01:30:34 GMT-0800 (PST)因此,只需通过以下方式将其转换为 js 日期:new Date(ISOString);

于 2015-03-23T22:09:26.350 回答
5

这对我有用:

var start = new Date("2020-10-15T00:00:00.000+0000");
 //or
start = new date("2020-10-15T00:00:00.000Z");

collection.find({
    start_date:{
        $gte: start
    }
})...etc
new Date(2020,9,15,0,0,0,0) 可能导致错误的日期:我的意思是非 ISO 格式(请记住 javascript 从 0 到 11 计算月份,所以 10 月份是 9)

于 2020-10-11T21:25:49.627 回答
4

我解决了这个问题,在 node.js 中实例化一个新的 Date 对象:...

在 Javascript 中,将 Date().toISOString() 发送到 nodejs:...

var start_date = new Date(2012, 01, 03, 8, 30);

$.ajax({
    type: 'POST',
    data: { start_date: start_date.toISOString() },
    url: '/queryScheduleCollection',
    dataType: 'JSON'
}).done(function( response ) { ... });

然后使用 ISOString 在 nodejs 中创建一个新的 Date 对象:..

exports.queryScheduleCollection = function(db){
    return function(req, res){

        var start_date = new Date(req.body.start_date);

        db.collection('schedule_collection').find(
            { start_date: { $gte: start_date } }
        ).toArray( function (err,d){
            ...
            res.json(d)
        })
    }
};

注意:我使用的是 Express 和 Mongoskin。

于 2014-02-25T20:04:33.013 回答