2016-09-12 3 views
0

Hallo Ich arbeite in Knoten js + mongodb.Knoten + Mongodb + ISODate + Zeitzone Problem

Wenn ich die Daten in die Sammlung einfügen, werden die Daten standardmäßig ISODate zB gespeichert. ISODate ("2016-06-17T13: 00: 21.665Z")

Ich möchte die Datumsfelder einfügen, die in UTC gespeichert werden sollen.

Es ist bereits im UTC-Format gespeichert oder muss im Code geändert werden?

Bitte jemand mich vorschlagen.

Mein Code:

var query = {}; 
query.created_by = 'admin'; 
query.created_on = new Date(); 
var collection = mongoUtil.list; 
collection.insert(query, function(err, item) { 
    if (!err && item) { 
     console.log("success"); 
    } else { 
     console.log("error"); 
    } 

}); 

Mongo eingefügt Daten:

{ "created_by" : "admin", "created_on" : ISODate("2016-06-17T13:00:21.665Z") } 

überprüfte ich die refference - Mongo UTC Refference aus Dokument:

  1. Date() gibt das aktuelle Datum als Saite in der Mongo-Schale.
  2. new Date() gibt das aktuelle Datum als Date-Objekt zurück. Die Mongo-Shell umschließt das Date-Objekt mit dem ISODate-Helper. Die ISODate ist in UTC.
+0

Welches Format erhalten Sie in node.js? – abdulbarik

+0

pls sagen Sie mir, wie zu überprüfen? – RSKMR

+0

Es ist im UTC-Format in Ihrem Datenspeicher gespeichert. Wenn Sie das Datum in node.js formatieren möchten, können Sie [Momente] (http: // momentjs.com/docs /) plugin – HoefMeistert

Antwort

0

Wenn Sie Date direkt einfügen oder aktualisieren, speichern Sie einen Zeitstempel. Es wird immer noch als UTC format gespeichert, auch wenn es als UTC-Format zurückgegeben wird, wenn Sie von Node.js abfragen.

Aber Sie können oder wollen nicht darauf vertrauen, dass die Zeit korrekt ist. Daher können Sie eine beliebige Methode erstellen oder verwenden, um das UTC-Format sicherzustellen.

0

Ja, wie in der Antwort von Abdulbarik erwähnt, speichert MongoDB das Datum in UTC.

Datum Objekt: -

Sie können getTimezoneOffset() -Methode die Differenz zwischen UTC und der Ortszeit zu erhalten.

var d = new Date() 
    var n = d.getTimezoneOffset(); 

    console.log('date obj ==>' + d); 
    console.log('time zone obj ==>' + n); 

Konsolenprotokoll: -

Sie können die Zeitzone sehen obj "-60" hat. Ich bin auf GMT + 1.

date obj ==>Mon Sep 12 2016 10:17:28 GMT+0100 (GMT Daylight Time) 
time zone obj ==>-60 

MongoDB hat das Datum in UTC beharrt: -

I Objekt "d" (d new Date()) bestehen bleibt das Datum in MongoDB verwendet habe. Obwohl ich auf GMT + 1 bin, wird das Datum in UTC gespeichert.

"timestamp" : ISODate("2016-09-12T09:17:28.193Z"), 
+0

Für mich auch jetzt das Speichern des Formats wie (2015-12-15T06: 15: 05.966Z) – RSKMR

+0

also, wenn ich Abfrage basierend auf timezome auswählen möchte oder wir im Front-End behandeln müssen? – RSKMR