How to set DateTime to null

C#Entity Framework

C# 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>

c# 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);

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionGibboKView Question on Stackoverflow
Solution 1 - C#Jon SkeetView Answer on Stackoverflow
Solution 2 - C#RahulView Answer on Stackoverflow
Solution 3 - C#Matthew WatsonView Answer on Stackoverflow
Solution 4 - C#FungView Answer on Stackoverflow
Solution 5 - C#Subhash JakharView Answer on Stackoverflow
Solution 6 - C#Zia KhanView Answer on Stackoverflow
Solution 7 - C#Fox Vĩnh TâmView Answer on Stackoverflow