我尝试将日期时间值从C#保存到MongoDB,其值为:
DateTime.ParseExact("10/02/2015", "dd/MM/yyyy", CultureInfo.InvariantCulture)
但在MongoDB中出现:
ISODate("2015-02-09T17:00:00.000Z")
我不知道为什么MongoDB的结果晚于一天(日期:9),而我的日期是10.感谢您阅读我的问题
更新1:作为#mnemosyn的回答我做了一些改变:
DateTime.SpecifyKind((DateTime.ParseExact("20/07/2015", "dd/MM/yyyy", CultureInfo.InvariantCulture)), DateTimeKind.Utc)
结果:ISODate("2015-07-20T00:00:00.000Z")
答案 0 :(得分:6)
问题是解析日期不被视为UTC日期。 02-09 + 7h正好是02-10 ...
DateTime
有一个名为Kind
的属性,其类型为DateTimeKind
。这些可以是Local
,UTC
或Unspecified
。如果您正在解析的字符串不指示它是哪一个,the returned DateTime.Kind
will be Unspecified
。 MongoDB驱动程序然后将其转换为UTC,因为这通常是人们在考虑DateTime
时所期望的。
请注意,“始终将UTC存储在数据库中”的咒语并不总是正确的,例如公共汽车时刻表。