Checking to see if a DateTime variable has had a value assigned
Solution 1:
do you mean like so:
DateTime datetime = new DateTime();
if (datetime == DateTime.MinValue)
{
//unassigned
}
or you could use Nullable
DateTime? datetime = null;
if (!datetime.HasValue)
{
//unassigned
}
Solution 2:
The only way of having a variable which hasn't been assigned a value in C# is for it to be a local variable - in which case at compile-time you can tell that it isn't definitely assigned by trying to read from it :)
I suspect you really want Nullable<DateTime>
(or DateTime?
with the C# syntactic sugar) - make it null
to start with and then assign a normal DateTime
value (which will be converted appropriately). Then you can just compare with null
(or use the HasValue
property) to see whether a "real" value has been set.
Solution 3:
put this somewhere:
public static class DateTimeUtil //or whatever name
{
public static bool IsEmpty(this DateTime dateTime)
{
return dateTime == default(DateTime);
}
}
then:
DateTime datetime = ...;
if (datetime.IsEmpty())
{
//unassigned
}
Solution 4:
I just found out that GetHashCode() for an unassigned datetime is always zero. I am not sure if this is a good way to check for null datetime, because, I can't find any documentation on why this behavior is displayed.
if(dt.GetHashCode()==0)
{
Console.WriteLine("DateTime is unassigned");
}