可以约会的日期

时间:2011-05-25 13:24:55

标签: c#

我有1个不可空的日期时间字段和1可以为空的日期时间字段。我可以使用以下代码与不可为空的代码:

 c.StartDate.Day.ToString() + "/" + 
 c.StartDate.Month.ToString() + "/" + 
 c.StartDate.Year.ToString()

但是当我尝试使用可空的那个时,我得到了错误:

  

'System.Nullable'不包含'Day'的定义,并且没有可以找到接受类型'System.Nullable'的第一个参数的扩展方法'Day'(你是否缺少using指令或汇编引用? )

如何获取可以为空的日期时间的日,月,年?

4 个答案:

答案 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)

你想要的结果是什么? “//”

您可以创建返回“”的扩展方法,但是您仍然会遇到想要最终结果的问题。