I try to save Datetime value from C# to MongoDB with value :
DateTime.ParseExact("10/02/2015", "dd/MM/yyyy", CultureInfo.InvariantCulture)
But in MongoDB show up :
ISODate("2015-02-09T17:00:00.000Z")
I don't know why MongoDB result later than one day (date : 9) while my date is 10. Thanks for your reading my question
Update 1 : As #mnemosyn's answer i do some change :
DateTime.SpecifyKind((DateTime.ParseExact("20/07/2015", "dd/MM/yyyy", CultureInfo.InvariantCulture)), DateTimeKind.Utc)
Result : ISODate("2015-07-20T00:00:00.000Z")
More detail : DateTime.ToLocalTime Method
The problem is that the parsed date is not considered a UTC date. 02-09+7h is exactly 02-10...
DateTime has a property called Kind which of type DateTimeKind. These can be Local, UTC or Unspecified. If the string you're parsing doesn't indicate which one it is, the returned DateTime.Kind will be Unspecified. The MongoDB driver then converts this to UTC because that is, more often than not, what people expect when they think of DateTime.
Note that the mantra 'always store UTC in the database' isn't always true, e.g. for a bus schedule.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With