在javascript中创建ISO日期对象

时间:2013-03-06 20:59:21

标签: javascript node.js mongodb coffeescript

我设置了一个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 cookbook提供了一个使用datetime模块查询mongo数据库的python示例,但没有提供任何使用javascript的示例。

感谢任何帮助。 提前感谢你

5 个答案:

答案 0 :(得分:83)

尝试使用the ISO string

var isodate = new Date().toISOString()

另请参阅:method definition at MDN

答案 1 :(得分:10)

在节点中,Mongo驱动程序将为您提供ISO字符串,而不是对象。 (例如:Mon Nov 24 2014 01:30:34 GMT-0800 (PST))因此,只需将其转换为js日期:new Date(ISOString);

答案 2 :(得分:9)

尝试以下:

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 */ 
});

答案 3 :(得分:2)

我解决了这个问题,在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。

答案 4 :(得分:1)

这对我有用:

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
新的Date(2020,9,15,0,0,0,0)可能导致错误的日期:我的意思是非ISO格式 (请记住,javascript的计数月份是从0到11,所以十月是9)。