2016-09-12 1 views
0

Bonjour Je travaille sur le noeud js + mongodb.Noeud + Mongodb + ISODate + Fuseau horaire

Lorsque j'insère les données dans la collection, les données sont stockées par défaut ISODate par exemple. ISODate ("2016-06-17T13: 00: 21.665Z")

Je souhaite insérer les champs de date à stocker en UTC.

Son déjà stocké dans le format UTC ou besoin de changer quelque chose dans le code?

S'il vous plaît, que quelqu'un me suggère.

Mon 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 inséré des données:

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

J'ai vérifié les refference - Mongo UTC Refference à partir du document:

  1. Date() renvoie la date actuelle comme chaîne dans la coquille de mongo.
  2. new Date() renvoie la date actuelle en tant qu'objet Date. Le shell mongo encapsule l'objet Date avec l'assistant ISODate. L'ISODate est dans UTC.
+0

Quel format obtenez-vous dans node.js? – abdulbarik

+0

pls dites-moi, comment vérifier? – RSKMR

+0

Il est stocké au format UTC dans votre banque de données. Si vous voulez formater la date dans node.js, vous pouvez utiliser [moments] (http: // momentjs.com/docs /) plugin – HoefMeistert

Répondre

0

Si vous insérez directement ou mise à jour Date, vous stockerez un horodatage. Il sera toujours stocké sous la forme UTC format même s'il est renvoyé au format UTC lorsque vous interrogez à partir de Node.js.

Mais vous pouvez ou ne pas vouloir croire que l'heure est correcte. Donc, pour cela, vous pouvez créer ou utiliser n'importe quelle méthode pour vous assurer du format UTC.

0

Oui, comme mentionné dans la réponse d'abdulbarik, MongoDB enregistre la date en UTC.

Date de l'objet: -

Vous pouvez utiliser la méthode getTimezoneOffset() pour obtenir la différence entre l'UTC et l'heure locale.

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

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

journal de la console: -

Vous pouvez voir le fuseau horaire obj a "-60". Je suis sur GMT + 1.

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

MongoDB a persisté la date UTC: -

Je l'ai utilisé objet "d" (à savoir new Date()) de persister la date à MongoDB. Bien que je sois sur GMT + 1, la date est stockée en UTC.

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

Pour moi aussi maintenant son stockage le format comme (2015-12-15T06: 15: 05.966Z) – RSKMR

+0

donc si je veux sélectionner une requête basée sur timezome ou nous avons besoin de gérer en front-end? – RSKMR