我有1个不可空的日期时间字段和1可以为空的日期时间字段。我可以使用以下代码与不可为空的代码:
c.StartDate.Day.ToString() + "/" +
c.StartDate.Month.ToString() + "/" +
c.StartDate.Year.ToString()
但是当我尝试使用可空的那个时,我得到了错误:
'System.Nullable'不包含'Day'的定义,并且没有可以找到接受类型'System.Nullable'的第一个参数的扩展方法'Day'(你是否缺少using指令或汇编引用? )
如何获取可以为空的日期时间的日,月,年?
答案 0 :(得分:35)
您必须使用可空的.Value
属性:
c.StartDate.Value.Day.ToString() //etc
检查null
后,您可以:
c.StartDate.Value.ToString("dd-MMM-yyyy");
答案 1 :(得分:5)
if(c.StartDate.HasValue)
{
DateTime sd = c.StartDate.Value;
str = sd.Day.ToString() + "/" + sd.Month.ToString() + "/" + sd.Year.ToString()
}
else
str = "some alternative for when there's no date";
更简单:
string str = c.StartDate.HasValue ? c.StartDate.value.ToString(@"d\/M\/yyyy") ? "some alternative for when there's no date";
答案 2 :(得分:2)
if(c.EndDate.HasValue)
{
c.EndDate.Value.Day.ToString() + ...
}
您可能还想检查日期的ToString()
并将其转换为仅包含一种格式模式且没有连接的字符串。
答案 3 :(得分:0)
你想要的结果是什么? “//”
您可以创建返回“”的扩展方法,但是您仍然会遇到想要最终结果的问题。