c# - 从 c# 到 mongodb 正确插入 DateTime

标签 c# mongodb datetime-format

我尝试在 MongoDB 中插入本地时间

var time = DateTime.Now; // 03.05.2014 18:30:30

var query = new QueryDocument
{
   { "time", nowTime}
};

collection3.Insert(query);

但在数据库中我看到 ISODate("2014-05-03T15:30:30.170Z"),
必须是 ISODate("2014-05-03T18:30:30.300Z")
请帮帮我!

最佳答案

我认为您对时区感到困惑。字符串末尾的 Z 表示它采用 UTC。当您发布此问题时,时间是 15:30 UTC 之后。

我强烈怀疑正在记录正确的时间点 - 但它被记录为时间点,没有引用特定时区。然后,您可以将其转换到您以后想要的任何时区,但记录 UTC 时间几乎总是正确的方法。

顺便说一句,您可以通过使用 UtcNow 来更清楚地说明这一点。这样一来,您并没有尝试获取“本地”时间就更明显了。

查看 MongoDB 文档,内部表示似乎只是自 Unix 纪元以来的毫秒数 - 同样,它没有指示时区或 UTC 和本地时间之间的偏移量。如果您想存储一个可以转换回记录时看到的本地时间的值(即使您现在 在不同的时区),您应该存储一个时区 ID 和/或 UTC 偏移量作为单独的值。这并不经常需要,但它是一种选择。

关于c# - 从 c# 到 mongodb 正确插入 DateTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23446414/

相关文章:

c# - 从 Web API 核心下载文件 - Angular 7

c# - 如何使用 Tesseract 提高结果识别?

javascript - 使用MongoDb和Node.js来组织代码

javascript - 将 bcryptjs 与 Mongo 结合使用

java - 查找给定日期是星期几

c# - 无法将 System.Net.Utilities 与 DNX 4.5.1 一起使用

node.js - 我如何在 CasperJS 中需要 MongoDB?

ruby-on-rails - 带有 12 小时制的引导日期时间选择器未在 Rails 中显示子午线(上午或下午)?

c# - .NET 日期添加天数

c# - SQLKata 动态 Where 子句