Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node+Mongodb+ISODate+时区问题_Javascript_Node.js_Mongodb_Utc_Isodate - Fatal编程技术网

Javascript Node+Mongodb+ISODate+时区问题

Javascript Node+Mongodb+ISODate+时区问题,javascript,node.js,mongodb,utc,isodate,Javascript,Node.js,Mongodb,Utc,Isodate,你好,我在NodeJS+mongodb工作 当我将数据插入到集合中时,数据存储为默认的ISODate,例如ISODate 2016-06-17T13:00:21.665Z 我想插入日期字段应存储在UTC中 它已经以UTC格式存储,或者需要更改代码中的任何内容 请任何人推荐我 我的代码: var query = {}; query.created_by = 'admin'; query.created_on = new Date(); var collection = mongoUtil.list

你好,我在NodeJS+mongodb工作

当我将数据插入到集合中时,数据存储为默认的ISODate,例如ISODate 2016-06-17T13:00:21.665Z

我想插入日期字段应存储在UTC中

它已经以UTC格式存储,或者需要更改代码中的任何内容

请任何人推荐我

我的代码:

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插入数据:

{ "created_by" : "admin", "created_on" : ISODate("2016-06-17T13:00:21.665Z") }
我检查了参考文献- 从文件:

Date在mongo shell中以字符串形式返回当前日期。 new Date将当前日期作为日期对象返回。蒙戈贝壳 使用ISODate辅助对象包装日期对象。ISODate在中 UTC。
如果直接插入或更新日期,则将存储时间戳。即使从Node.js查询时返回UTC格式,它仍将存储为UTC格式


但你可能不想相信时间是正确的。因此,您可以创建或使用任何方法来确保UTC格式。

是的,如abdulbarik的回答中所述,MongoDB确实以UTC格式保存日期

日期对象:-

您可以使用getTimezoneOffset方法获取UTC和本地时间之间的差值

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

  console.log('date obj ==>' + d);
  console.log('time zone obj ==>' + n);
控制台日志:-

你可以看到时区obj为-60。我在格林尼治时间+1

MongoDB已将日期保留为UTC:-

我已经使用对象d即new Date在MongoDB中持久化了日期。虽然我在GMT+1上,但日期存储在UTC中

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

你在node.js中得到了什么格式?请告诉我,如何检查?它以UTC格式存储在你的数据存储中。如果你想在node.js中格式化日期,你可以使用pluginform,如果我想选择基于timezome的查询,或者我们需要在前端处理,它现在也可以存储格式,比如2015-12-15T06:15:05.966Zso?
 "timestamp" : ISODate("2016-09-12T09:17:28.193Z"),