当前位置: 首页 > 知识库问答 >
问题:

节点Mongodb等日期时区问题

毕魁
2023-03-14

你好,我在node js 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") }

我检查了文档中的引用-Mongo UTC引用:

  1. Date()在mongo shell中以字符串形式返回当前日期

共有2个答案

澹台衡
2023-03-14

如果直接插入或更新日期,则会存储时间戳。即使从节点查询时返回UTC格式,它仍将存储为UTC格式。js

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

魏鸿禧
2023-03-14

是的,正如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。

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

MongoDB在UTC中保存了日期:-

我已经使用对象“d”(即新的日期())在MongoDB中保存日期。虽然我在格林尼治标准时间1,但日期存储在UTC中。

 "timestamp" : ISODate("2016-09-12T09:17:28.193Z"),
 类似资料:
  • 问题内容: 我需要一个具有日期和年份指定值的jsDate对象。我希望给我Date对象2000作为价值,但如果我的电脑的时间设定到芝加哥时区,我得到,和布宜诺斯艾利斯:。 有没有一种方法可以创建Date对象,并返回我们在构造函数中设置的日期,无论在用户计算机上设置了什么时区? 更新:我需要在另一个库中使用此Date对象(该库调用其方法,因此使用UTC getter并没有真正的帮助。 问题答案: 在J

  • 我已经尝试了所有方法来启用安装Symfony2后运行此命令的能力。 php应用程序/控制台缓存:清除--无预热或php应用程序/控制台缓存:清除 我每次都会遇到此错误: [错误异常]警告:date\u default\u timezone\u get():依赖系统的时区设置是不安全的。您需要使用日期。时区设置或date\u default\u timezone\u set()函数。如果您使用了这些

  • 有人能帮我吗?我正在使用$lookup在MongoDB中加入以获取日期在日期“X”和日期“Y”之间的所有订单,chef_id是“P”。“日期”部分有问题,没有提供日期的数据。但是当我在单个查找查询中使用它时,它可以正常工作并在日期之间提供数据。但是当我使用$lookup申请加入时,它不会提供数据。这是我的查询 谁能帮帮我。 我的收藏在这里“订购”收藏 这是我的用户收藏 }

  • 我在+5:30,即IST时区。 在通过提供year、month和date创建日期期间,节点js将其视为IST并自动扣除-5:30。 节点js通过考虑该日期位于服务器时区,将该日期自动转换为UTC。但在浏览器中,我得到了正确的CST日期没有时间。 2017-03-08T12:28:16.381Z 2017-03-08T17:58:16.000Z 浏览器输出:

  • 我正在构建一个react应用程序,使用MongoDb和express后端作为数据库。我的一个模型具有属性日期,类型为date。 然后,在我的反应应用程序上,我有一个表单,我在其中输入所有这些信息。但是如果我把一个日期,比如01/11/2017,保存的日期是31/10/2017。据我所知,这是因为MongoDd以UTC格式存储日期。有没有办法改变这种行为?因为同样,当我尝试按日期搜索时,这个问题也给

  • 我有一个使用百里香叶作为视图层的Spring Boot Web应用程序,我需要显示一些特定时区的日期(CET = UTC 1/UTC 2)。 服务器设置为UTC,所有日期都以UTC格式作为datetime存储在我的数据库中,这很好。 现在我想在我的超文本标记语言页面上显示这个日期,不是UTC格式,而是使用胸膜时序的CET,但它似乎不起作用。 date对象是一个Java Instant。 从 DB