首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >节点+ Mongodb + ISODate +时区问题

问节点+ Mongodb + ISODate +时区问题
EN

Stack Overflow用户
提问于 2016-09-12 08:14:37
回答 2查看 9.4K关注 0票数 1

你好,我在节点js + mongodb中工作。

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

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

它已经以UTC格式存储,还是需要在代码中更改任何内容?

请有人推荐我。

我的守则:

代码语言:javascript
复制
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插入的数据:

代码语言:javascript
复制
{ "created_by" : "admin", "created_on" : ISODate("2016-06-17T13:00:21.665Z") }

我查看了文档中的refference - 蒙戈世界协调时风险:

  1. Date()将当前日期作为mongo中的字符串返回。
  2. new Date()将当前日期作为date对象返回。mongo用ISODate助手包装Date对象。ISODate在世界协调时。
EN

回答 2

Stack Overflow用户

发布于 2016-09-12 09:39:13

是的,正如abdulbarik的回答中提到的,MongoDB确实在UTC保存了日期。

Date对象:-

您可以使用getTimezoneOffset()方法来获得UTC和本地时间之间的差异。

代码语言:javascript
复制
  var d = new Date()
  var n = d.getTimezoneOffset();

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

控制台日志:-

你可以看到时区obj有"-60“。我在GMT+1上。

代码语言:javascript
复制
date obj ==>Mon Sep 12 2016 10:17:28 GMT+0100 (GMT Daylight Time)
time zone obj ==>-60

MongoDB将日期保存在UTC:-中。

我使用对象"d“(即新日期())在MongoDB中持久化日期。虽然我在GMT+1上,但日期存储在UTC。

代码语言:javascript
复制
 "timestamp" : ISODate("2016-09-12T09:17:28.193Z"),
票数 2
EN

Stack Overflow用户

发布于 2016-09-12 09:26:03

如果直接插入或更新日期,则将存储时间戳。它仍将作为UTC format存储,甚至在您从Node.js查询时返回为UTC格式。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39445952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档