Dalam kebanyakan kasus, Anda ingin menyimpan waktu tanggal UTC dalam database sehingga DateTime Anda harus dibuat sebagai:-
DateTest = new DateTime(2013, 10, 13, 0, 0, 0, DateTimeKind.Utc) //this is the date
Dengan ini, pengujian unit komentar pertama Anda sekarang berlalu.
Tanpa menentukan DateTimeKind
Anda membiarkannya secara kebetulan. MongoDB tampaknya menganggap bahwa itu lokal dan mengubahnya menjadi UTC di database.
Perhatikan juga bahwa nilai MongoDB DateTime memiliki presisi yang lebih rendah daripada nilai .NET DateTime. Jika Anda ingin menyimpan nilai DateTime arbitrer dan mengembalikannya sedemikian rupa sehingga masih cocok, Anda harus membulatkannya ke milidetik terdekat sebelum menyimpannya.
Jika Anda benar-benar ingin menyimpan waktu lokal, saya sarankan Anda beralih dari DateTime
ke DateTimeOffset
dan membuat serial sebagai nilai Tick yang panjang untuk UTC DateTime dan nilai untuk offset.
Perhatikan bahwa kecuali Anda menyimpan offset yang dihitung pada saat nilai DateTime diperoleh, maka metode .NET untuk mengonversi ke LocalTime pada dasarnya tidak berguna karena mereka tidak tahu kapan waktu musim panas dimulai, mereka juga tidak tahu zona mana nilai DateTime berasal dari. Secara keseluruhan, penanganan .NET DateTime meninggalkan banyak hal yang diinginkan dan mengandung banyak metode menyesatkan yang mengklaim dapat membantu tetapi sebenarnya tidak.