【问题标题】:Mongodb date is off by 1 hourMongodb 日期延迟 1 小时
【发布时间】:2012-09-07 00:10:14
【问题描述】:

我在 ubuntu 服务器上运行 mongodb。服务器时间是

root# date
Thu Sep 13 21:15:58 BST 2012

但是当我运行以下命令时,我得到了不同的结果

root# mongo
MongoDB shell version: 2.2.0
connecting to: test
> new Date()
ISODate("2012-09-13T20:15:58.670Z")

正好相差一小时。当我使用 MongoDate() 用 php 更新文档 updated_on 字段时,该字段的值仍然是 1 小时。

[编辑] 实际上我刚刚检查了我的 php 错误日志,日志文件中的时间也是 1 小时

[13-Sep-2012 20:11:14 UTC] Log Message (Time should be 21:11:14)

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    在 Windows 上更改您的时区。 控制面板 -> 日期和时间 -> 更改时区 -> (UTC) 协调世界时。 然后改变你的时间

    【讨论】:

      【解决方案2】:

      在这里,您需要了解时钟中的时间设置概念,称为daylight saving time. 在世界上的某些国家/地区,时钟提前 1 小时或更多小时以多体验日光一小时。 IST 和 GST 之间的时间差是 5.30 小时,但新德里和伦敦时间之间的实际时间差是 6.30 小时。服务器时间的设置和使用请看4GuysFromRolla的这篇文章。

      【讨论】:

        【解决方案3】:

        您可以通过使用ToLocalTime 方法显示日期时间来解决此问题。

        MVC C# 示例:@Model.StartDate.ToLocalTime()

        这是由于 MongoDB 以 BST 格式存储日期时间的方式。因此,夏令时或服务器的时区会对返回给应用程序的实际日期时间产生影响。这个简单的代码将能够像往常一样使用ToString("dd MMMM yyyy hh:mm tt") 或根据您的要求的任何其他格式进行格式化。

        【讨论】:

          【解决方案4】:

          蒙哥告诉你

          2012-09-13T20:15:58.670Z
          

          Z = 祖鲁时间 / 零时差 / UTC。您还可以将 TZ 中的时间表示为 2012-09-13T20:15:58.670+00:00,顺便说一下 the ISO8601 standard 中的定义。

          英国夏令时是 UTC+1。所以,它们是相同的时间,但在不同的时区。

          【讨论】:

          • 感谢您的快速回复。如何让 Mongo 告诉我 BST 的时间?以及为什么php日志文件有同样的问题?
          • 也许服务器在没有时区的 UTC 中运行?检查其 TZ 定义。而且日志文件也不是“关闭”的,它只是生活在同一时间但在不同的时区:-)
          • :) 我认为这更多是关于 ubuntu 然后是 mongodb 或 php :) 谢谢你的时间。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-03-15
          • 2016-05-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多