Mengingat sifat tipe data tanggal / waktu itu tidak dapat berisi nullnilai, yaitu perlu mengandung nilai, itu tidak boleh kosong atau tidak mengandung apa pun. Jika Anda menandai variabel tanggal / waktu nullablemaka Anda hanya dapat menetapkan nilai nol untuknya. Jadi yang ingin Anda lakukan adalah salah satu dari dua hal (mungkin ada lebih banyak tetapi saya hanya bisa memikirkan dua):
Tetapkan nilai tanggal / waktu minimum untuk variabel Anda jika Anda tidak memiliki nilai untuk itu. Anda dapat menetapkan nilai tanggal / waktu maksimum juga - mana yang cocok untuk Anda. Pastikan bahwa Anda konsisten di seluruh situs saat memeriksa nilai tanggal / waktu Anda. Putuskan untuk menggunakan minatau maxdan tetap menggunakannya.
Tandai variabel tanggal / waktu Anda sebagai nullable. Dengan cara ini Anda dapat mengatur variabel tanggal / waktu nullAnda jika Anda tidak memiliki variabel untuk itu.
Biarkan saya menunjukkan poin pertama saya menggunakan contoh. The DateTimejenis variabel tidak dapat diatur untuk null, perlu nilai, dalam hal ini saya akan set ke DateTime's nilai minimum jika tidak ada nilai.
Skenario saya adalah saya memiliki BlogPostkelas. Ini memiliki banyak bidang / properti yang berbeda tetapi saya memilih hanya menggunakan dua untuk contoh ini. DatePublishedadalah ketika posting dipublikasikan ke situs web dan harus mengandung nilai tanggal / waktu. DateModifiedadalah ketika sebuah posting diubah, sehingga tidak harus mengandung nilai, tetapi dapat mengandung nilai.
public class BlogPost : Entity
{
public DateTime DateModified { get; set; }
public DateTime DatePublished { get; set; }
}
Menggunakan ADO.NETuntuk mendapatkan data dari database (menetapkan DateTime.MinValueapakah tidak ada nilai):
BlogPost blogPost = new BlogPost();
blogPost.DateModified = sqlDataReader.IsDBNull(0) ? DateTime.MinValue : sqlDataReader.GetFieldValue<DateTime>(0);
blogPost.DatePublished = sqlDataReader.GetFieldValue<DateTime>(1);
Anda dapat mencapai poin kedua saya dengan menandai DateModifiedbidang sebagai nullable. Sekarang Anda dapat mengaturnya nulljika tidak ada nilai untuk itu:
public DateTime? DateModified { get; set; }
Menggunakan ADO.NETuntuk mendapatkan data dari database, itu akan terlihat sedikit berbeda dengan cara itu dilakukan di atas ( nullbukan penugasan DateTime.MinValue):
BlogPost blogPost = new BlogPost();
blogPost.DateModified = sqlDataReader.IsDBNull(0) ? (DateTime?)null : sqlDataReader.GetFieldValue<DateTime>(0);
blogPost.DatePublished = sqlDataReader.GetFieldValue<DateTime>(1);
Saya harap ini membantu menjernihkan kebingungan. Mengingat bahwa tanggapan saya sekitar 8 tahun kemudian, Anda mungkin seorang programmer C # yang ahli sekarang :)