如何检查dataRow中的dateTime是否为空?

时间:2015-12-03 09:57:45

标签: c# datetime

我正在写一个Web应用程序。我想检查dateFrom是否为null或者dateTo是否为null。如果dateFrom为null,则打印出dateTo,如果dateTo为null,则打印出dateFrom。如果两者都存在,则打印出12/3/2015 - 12/3/2015等阵型。我有大部分代码工作,但我无法弄清楚如何处理null日期。它一直给我这个例外

  

字符串未被识别为有效的DateTime

这是我的代码

public DataSet SearchTimingReq()
{
    DateTime effectDateFrom, effectDateTo;
    DataSet ds = someDataSet();    

    if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
    {
        foreach (DataRow row in ds.Tables[0].Rows)
        {

            if (Convert.ToDateTime(row["Effect_Date_To"].ToString()).ToString("dd/MM/yyyy") == DateTime.MinValue.ToString())
            {
                  row["Effective_Period"] = effectDateFrom.ToString("dd/MM/yyyy");
            }

            if (Convert.ToDateTime(row["Effect_Date_From"].ToString()).ToString("dd/MM/yyyy") == DateTime.MinValue.ToString())
            {
                  row["Effective_Period"] = effectDateTo.ToString("dd/MM/yyyy");
            }

            if (effectDateTo != DateTime.MinValue && effectDateFrom == DateTime.MinValue)
            {
                  row["Effective_Period"] = Convert.ToDateTime(row["Effect_Date_From"].ToString()).ToString("dd/MM/yyyy") + " - " + Convert.ToDateTime(row["Effect_Date_To"].ToString()).ToString("dd/MM/yyyy");
            }    
        }
    }
}

更新了代码

if (!DBNull.Value.Equals(row["Effect_Date_From"]))
{
    row["Effective_Period"] = Convert.ToDateTime(row["Effect_Date_To"].ToString()).ToString("dd/MM/yyyy");
}
if (!DBNull.Value.Equals(row["Effect_Date_To"]))
{
    row["Effective_Period"] = Convert.ToDateTime(row["Effect_Date_From"]).ToString("dd/MM/yyyy");
}

if (DBNull.Value.Equals(row["Effect_Date_To"]) && DBNull.Value.Equals(row["Effect_Date_From"]))
{
    row["Effective_Period"] = Convert.ToDateTime(row["Effect_Date_From"].ToString()).ToString("dd/MM/yyyy") + " - " + Convert.ToDateTime(row["Effect_Date_To"].ToString()).ToString("dd/MM/yyyy");
}

2 个答案:

答案 0 :(得分:1)

您可以使用以下代码检查数据表数据行上的空值。

Column1 | Column2 | Column3 | Score
a       |   B     |   C     |   0
x       |   NULL  |   NULL  |   2

答案 1 :(得分:0)

您可以使用DateTime.TryParse来处理无效的DateTime值,同时也可以解析日期。

DateTime d;
if(DateTime.TryParse(row["column"], out d)) 
{
//it's a valid DT
}
else
{
//invalid
}