C# 比较两个日期一个来自数据库,另一个来自datetime.now

C# 比较两个日期一个来自数据库,另一个来自datetime.now,c#,asp.net,C#,Asp.net,我有一个gridview,我想突出显示差异大于10的日期 我现在有什么 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { DateTime dateNow = DateTime.Now; string

我有一个gridview,我想突出显示差异大于10的日期

我现在有什么

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            DateTime dateNow = DateTime.Now;
            string dateCreated = e.Row.Cells[5].Text;

            DateTime dc = Convert.ToDateTime(dateCreated);
            TimeSpan difference = dateNow - dc;

            if (difference.TotalDays > 0)
            {
                e.Row.BackColor = System.Drawing.Color.Cyan; // This will make row back color red
            }
        }
    }

保存到我的数据库中的日期格式为dd-MM-YYYY,另存为nvarchar。

您应该这样解析日期时间:

DateTime dc = DateTime.ParseExact(dateCreated, "dd-MM-yyyy", CultureInfo.InvariantCulture);

维克多·莱昂蒂耶夫正在进行解析。但是,你还必须调整你的逻辑:

if (difference.TotalDays > 0)

使用以下命令:

int minutes = (int)DateTime.Now.Subtract(dc).TotalMinutes;
或天

int days = (int)DateTime.Now.Subtract(dc).TotalDays;
或秒、毫秒、周

要从字符串中获取日期,请执行以下操作:

string dateCreated = "01-01-2017";
string[] dcArray = dateCreated.Split('-');
DateTime dc = new DateTime(int.Parse(dcArray[2]), int.Parse(dcArray[1]), int.Parse(dcArray[0]));

您应该解释一下这个代码有什么问题。毫无疑问,我对此感到抱歉,但我的问题是。。它没有突出显示行。我遇到了以下错误“mscorlib.dll中发生了“System.FormatException”类型的异常,但未在用户代码中处理”您建议如何将dateCreated字符串转换为?您所做的是正确的
DateTime dc=Convert.ToDateTime(dateCreated)我必须将我的答案日期更改为dc。我编辑了我的答案,它将按照您的要求防御性地工作。
string dateCreated = "01-01-2017";
string[] dcArray = dateCreated.Split('-');
DateTime dc = new DateTime(int.Parse(dcArray[2]), int.Parse(dcArray[1]), int.Parse(dcArray[0]));