Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Comparing nullable DateTime?

Looking for a better way to compare a nullable date time than the following:

Any suggestions?

// myobject.ExpireDatetime is of DateTime? // if (!myobject.ExpireDateTime.IsNull() && DateTime.Compare((DateTime)myobject.ExpireDateTime, DateTime.Now.ToUniversalTime()) < 0) { //error! }     

Edited: Sorry for confusion...myobject.ExpireDatetime is of type DateTime.

like image 269
genxgeek Avatar asked Dec 02 '12 19:12

genxgeek


People also ask

How do you compare dates with null?

DateTime CAN be compared to null; It cannot hold null value, thus the comparison will always be false. DateTime is a "Value Type". Basically a "value type" can't set to NULL. But by making them to "Nullable" type, We can set to null.

Can DateTime be null C #?

Is it possible to set datetime object to null in C#? DateTime is a Value Type like int, double etc. so there is no way to assigned a null value.

Can DateTime be null in SQL?

Inserting a null value to the DateTime Field in SQL Server is one of the most common issues giving various errors. Even if one enters null values the value in the database is some default value as 1/1/1900 12:00:00 AM.


1 Answers

Your question is not quite clear to me, but if we have

DateTime? ExpireDateTime;  // could be a variable or a property 

it's OK to say just

if (ExpireDateTime < DateTime.UtcNow) {   ... } 

This will be OK if ExpireDateTime is null (HasValue is false). Some inexperienced developers will struggle to understand lifted operators, so to make it more clear, you could write

if (ExpireDateTime < (DateTime?)DateTime.UtcNow) {   ... } 

It's the same, but easier to read and understand.

Never write .Value if the nullable might be null, of course. You will get an InvalidOperationException "Nullable object must have a value" if you do so.

like image 88
Jeppe Stig Nielsen Avatar answered Oct 02 '22 14:10

Jeppe Stig Nielsen