ほとんどの場合、UTCの日時をデータベースに保存するため、DateTimeは次のように作成する必要があります。-
DateTest = new DateTime(2013, 10, 13, 0, 0, 0, DateTimeKind.Utc) //this is the date
これにより、コメントされた最初の単体テストに合格します。
DateTimeKind
を指定せずに あなたはそれを偶然に任せています。 MongoDBは、ローカルであると想定し、データベースでUTCに変換しているようです。
MongoDB DateTime値は、.NETDateTime値よりも精度が低いことにも注意してください。任意のDateTime値を保存し、それらが一致するように戻す場合は、保存する前に最も近いミリ秒に丸める必要があります。
本当に現地時間を保存したい場合は、DateTime
から切り替えることをお勧めします DateTimeOffset
へ UTCDateTimeの長いTick値とオフセットの値としてシリアル化します。
DateTime値が取得されたときに計算されたオフセットを保存しない限り、LocalTimeに変換する.NETメソッドは、夏時間がいつ開始されたかを知らず、DateTime値がどのゾーンに来るかさえ知らないため、本質的に役に立たないことに注意してください。から。全体として、.NET DateTimeの処理には多くの要望があり、役立つと主張しているが実際には役に立たない誤解を招くメソッドが多数含まれています。