web-dev-qa-db-ja.com

JavaScriptでISO日付オブジェクトを作成する

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クックブックは、datetimeモジュールを使用してmongoデータベースを照会するpythonの例を提供していますが、javascriptを使用する例は提供していません。

どんな助けも大歓迎です。よろしくお願いします

51
Joel James

ISO文字列 を使用してみてください

var isodate = new Date().toISOString()

MDNでのメソッド定義 も参照してください。

86
Mathletics

ノードでは、MongoドライバーはオブジェクトではなくISO文字列を提供します。 (例:Mon Nov 24 2014 01:30:34 GMT-0800 (PST))したがって、次の方法で単純にjs Dateに変換します:new Date(ISOString);

10
iheartweb

以下を試してください:

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

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を使用しています。

2
fgborja