Javascript Node+Mongodb+ISODate+时区问题
你好,我在NodeJS+mongodb工作 当我将数据插入到集合中时,数据存储为默认的ISODate,例如ISODate 2016-06-17T13:00:21.665Z 我想插入日期字段应存储在UTC中 它已经以UTC格式存储,或者需要更改代码中的任何内容 请任何人推荐我 我的代码: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
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"),