将日期时间从C#保存到MongoDB

Han*_*ana 5 c# mongodb

我尝试将值从C#保存到MongoDB的日期时间值:

DateTime.ParseExact("10/02/2015", "dd/MM/yyyy", CultureInfo.InvariantCulture)
Run Code Online (Sandbox Code Playgroud)

但在MongoDB中出现:

ISODate("2015-02-09T17:00:00.000Z")
Run Code Online (Sandbox Code Playgroud)

我不知道为什么MongoDB的结果晚于一天(日期:9),而我的日期是10.感谢您阅读我的问题

更新1:作为#mnemosyn的回答我做了一些改变:

DateTime.SpecifyKind((DateTime.ParseExact("20/07/2015", "dd/MM/yyyy", CultureInfo.InvariantCulture)), DateTimeKind.Utc)
Run Code Online (Sandbox Code Playgroud)

结果: ISODate("2015-07-20T00:00:00.000Z")

更多细节:DateTime.ToLocalTime方法

mne*_*syn 6

问题是解析的日期不被视为UTC日期.02-09 + 7h正好是02-10 ......

DateTime有一个叫做财产Kind哪种类型的DateTimeKind.这些可以是Local,UTCUnspecified.如果您正在解析的字符串不指示它是哪一个,则返回DateTime.KindUnspecified的字符串将是.然后,MongoDB驱动程序将其转换为UTC,因为这通常是人们在想到的时候所期望的DateTime.

请注意,"总是将UTC存储在数据库中"的咒语并不总是正确的,例如对于公交时刻表而言.