如何将DateTime设置为null

Gib*_*boK 43 c# entity-framework

使用C#.我有一个字符串dateTimeEnd.

如果字符串格式正确,我希望生成一个DateTime并将其分配给类型的eventCustom.DateTimeEnd

public Nullable<System.DateTime> DateTimeEnd { get; set; }
Run Code Online (Sandbox Code Playgroud)

如果dateTimeEnd为null或为空,则需要eventCustom.DateTimeEnd设置为null.

我试图使用以下代码实现这一点,但我总是为null eventCustom.DateTimeEnd.

你能帮我解决一下我代码中的错误吗?

   DateTime? dateTimeEndResult;
     if (!string.IsNullOrWhiteSpace(dateTimeEnd))
        dateTimeEndResult = DateTime.Parse(dateTimeEnd);


eventCustom.DateTimeEnd = dateTimeEndResult = true ? (DateTime?)null : dateTimeEndResult;
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 111

看起来你只是想要:

eventCustom.DateTimeEnd = string.IsNullOrWhiteSpace(dateTimeEnd)
    ? (DateTime?) null
    : DateTime.Parse(dateTimeEnd);
Run Code Online (Sandbox Code Playgroud)

请注意,如果dateTimeEnd不是有效日期,则会引发异常.

另一种选择是:

DateTime validValue;
eventCustom.DateTimeEnd = DateTime.TryParse(dateTimeEnd, out validValue)
    ? validValue
    : (DateTime?) null;
Run Code Online (Sandbox Code Playgroud)

现在将结果设置为nullif dateTimeEnd无效.请注意,TryParse句柄null作为输入没有问题.


Rah*_*hul 13

DateTime 是一个不可为空的值类型

DateTime? newdate = null;
Run Code Online (Sandbox Code Playgroud)

你可以使用 Nullable<DateTime>

c#Nullable Datetime