我尝试在 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/