简体   繁体   English

如何在C#中解析可为空的DateTime对象

[英]How to parse nullable DateTime object in C#

command.Parameters.Add("@EndDate", SqlDbType.DateTime).Value = 
     EndDate == null ? 
        (DateTime?)null : 
        DateTime.Parse(EndDate.ToShortDateString() + " " + EndTime);

EndDate is of type DateTime? EndDate是DateTime类型吗? and EndTime is just a string containing time. EndTime只是一个包含时间的字符串。 But it is giving me error while parsing because EndDate is a nullable DateTime. 但这在解析时给我错误,因为EndDate是可为空的DateTime。 How can I parse this ? 我该如何解析?

由于EndDate是可为空的,因此您可以像这样解析它。

DateTime.Parse(EndDate.Value.ToShortDateString() + " " + EndTime);

尝试使用下面的方法获取值

DateTime.Parse(EndDate.GetValueOrDefault().ToShortDateString() + " " + EndTime);

我通常使用default(DateTime?)并且您还需要强制转换为可空的DateTime对象:

return EndDate.HasValue ? DateTime.Parse(EndDate.Value.ToShortDateString() + " " + EndTime) as DateTime? : default(DateTime?)

You need to use: EndDate.HasValue.ToShortDateString(): 您需要使用:EndDate.HasValue.ToShortDateString():

Converting your code: 转换代码:

command.Parameters.Add("@EndDate", SqlDbType.DateTime).Value = 
EndDate.HasValue == false ? 
(DateTime?)null : 
DateTime.Parse(EndDate.HasValue.ToShortDateString() + " " + EndTime);

You could also write the following: 您还可以编写以下内容:

        var endDateParameter = endDate.HasValue ?
        new SqlParameter("EndDate", DateTime.Parse(EndDate.HasValue.ToShortDateString() + " " + EndTime)) :
        new SqlParameter("EndDate", typeof(System.DateTime));

Cheers, Noah 干杯,诺亚

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM