How to set DateTime to null
C#Entity FrameworkC# Problem Overview
Using C#. I have a string dateTimeEnd
.
If the string is in right format, I wish to generate a DateTime
and assign it to eventCustom.DateTimeEnd of type
public Nullable<System.DateTime> DateTimeEnd { get; set; }
If dateTimeEnd
is null or empty I need eventCustom.DateTimeEnd
set to null.
I am trying to achieve this using the following code but I get always null for eventCustom.DateTimeEnd
.
Could you please help me out to define what is wrong in my code?
DateTime? dateTimeEndResult;
if (!string.IsNullOrWhiteSpace(dateTimeEnd))
dateTimeEndResult = DateTime.Parse(dateTimeEnd);
eventCustom.DateTimeEnd = dateTimeEndResult = true ? (DateTime?)null : dateTimeEndResult;
C# Solutions
Solution 1 - C#
It looks like you just want:
eventCustom.DateTimeEnd = string.IsNullOrWhiteSpace(dateTimeEnd)
? (DateTime?) null
: DateTime.Parse(dateTimeEnd);
Note that this will throw an exception if dateTimeEnd
isn't a valid date.
An alternative would be:
DateTime validValue;
eventCustom.DateTimeEnd = DateTime.TryParse(dateTimeEnd, out validValue)
? validValue
: (DateTime?) null;
That will now set the result to null
if dateTimeEnd
isn't valid. Note that TryParse
handles null
as an input with no problems.
Solution 2 - C#
DateTime
is a non-nullable value type
DateTime? newdate = null;
You can use a Nullable<DateTime>
Solution 3 - C#
This should work:
if (!string.IsNullOrWhiteSpace(dateTimeEnd))
eventCustom.DateTimeEnd = DateTime.Parse(dateTimeEnd);
else
eventCustom.DateTimeEnd = null;
Note that this will throw an exception if the string is not in the correct format.
Solution 4 - C#
This line:
eventCustom.DateTimeEnd = dateTimeEndResult = true ? (DateTime?)null : dateTimeEndResult;
is same as:
eventCustom.DateTimeEnd = dateTimeEndResult = (true ? (DateTime?)null : dateTimeEndResult);
because the conditional operator ?
has a higher precedence than the assignment operator =
. That's why you always get null for eventCustom.DateTimeEnd
. (MSDN Ref)
Solution 5 - C#
You can write DateTime? newdate = null;
Solution 6 - C#
It's simple
//declare date object
maxDate: Date;
//assign value
this.maxDate=new Date(event.value._d); //event.value._d is date formate
//setting date Object to null
this.maxDate=null;
Solution 7 - C#
Now, I can't use DateTime?
, I am using DBNull.Value
for all data types. It works great.
eventCustom.DateTimeEnd = string.IsNullOrWhiteSpace(dateTimeEnd)
? DBNull.Value
: DateTime.Parse(dateTimeEnd);