driver c # secara default (tanpa pengaturan tambahan) menyimpan tanggal lokal sebagai tanggal utc ke dalam database (tanggal - zona waktu offset) tetapi membaca kembali tanpa tindakan apa pun (jadi, tanggal utc).
Karena itu ketika Anda memuat datetime dari database, Anda menerima perbedaan dalam 2 jam (offset zona waktu Anda). Ada dua pendekatan bagaimana mengatakan kepada driver mongodb c# mengonversi tanggal utc ke tanggal zona waktu lokal selama deserialisasi:
1.melalui atribut untuk bidang tanggal tertentu:
[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
public DateTime SomeDateProperty {get;set;}
2.melalui pengaturan global untuk semua bidang waktu-tanggal (defaultnya adalah UtcInstance
):
DateTimeSerializationOptions.Defaults = DateTimeSerializationOptions.LocalInstance;
Setelah Anda melakukan #1 atau #2, Anda akan melihat tanggal lokal.
Pembaruan:
#2 sudah usang dalam versi driver terbaru jadi gunakan kode di bawah ini sebagai gantinya:
BsonSerializer.RegisterSerializer(typeof(DateTime),
new DateTimeSerializer(DateTimeSerializationOptions.LocalInstance));
Pembaruan:
#2 telah berubah lagi:
BsonSerializer.RegisterSerializer(typeof(DateTime), DateTimeSerializer.LocalInstance);