如何比较C#中没有时间轴的两个日期

Sag*_*ran 0 c# comparison datetime

我想比较两个日期.在伪代码中:

If the dueDate > now or dueDate = now 

Then Fine Amount = something.

Else Fine Amount = 0
Run Code Online (Sandbox Code Playgroud)

我在下面写了代码:

DateTime dueDate = Convert.ToDateTime(Reader1[3].ToString());
DateTime now = DateTime.Now;
int result = DateTime.Compare(dueDate, now);
if ((result < 0) || (result == 1))
{
    row["Fine_Amount"] = Convert.ToDouble(Reader1[4].ToString()); 
}
else
{
    row["Fine_Amount"] = 0;
}
Run Code Online (Sandbox Code Playgroud)

这段代码给出错误的值,何时

dueDate = 23-12-2011 AM 12:00:00
now = 23-12-2011 PM 05:26:54
Run Code Online (Sandbox Code Playgroud)

我想要比较:

dueDate = 23-12-2011
now = 23-12-2011
Run Code Online (Sandbox Code Playgroud)

如何删除时间?

添加下面的代码得到结果.但它的冗长代码: -

 DateTime dueDate = Convert.ToDateTime(Reader1[3].ToString());
                    DateTime now = DateTime.Now;

                    if (dueDate.Year < now.Year)
                    {
                        row["Fine_Amount"] = Convert.ToDouble(Reader1[4].ToString());
                    }
                    else if (dueDate.Year > now.Year)
                    {
                        row["Fine_Amount"] = 0;
                    }
                    else if (dueDate.Year == now.Year)
                    {
                        if (dueDate.Month < now.Month)
                        {
                             row["Fine_Amount"] = Convert.ToDouble(Reader1[4].ToString();
                        }
                        else if(dueDate.Month > now.Month)
                        {
                             row["Fine_Amount"] = 0;
                        }
                        else if(dueDate.Month == now.Month)
                        {
                             if(dueDate.Day < now.Day)
                             {
                                 row["Fine_Amount"] = Convert.ToDouble(Reader1[4].ToString();
                             }
                             else
                             {
                                 row["Fine_Amount"] = 0;
                             }
                        }
                    }
Run Code Online (Sandbox Code Playgroud)

有没有办法缩短这段代码?

回答这个问题是

if (dueDate.Date >= now.Date)
{
    row["Fine_Amount"] = 0;
}
else
{
    row["Fine_Amount"] = Convert.ToDouble(Reader1[4].ToString());
}
Run Code Online (Sandbox Code Playgroud)

这个datetime.date是给出的

 dueDate = 23-12-2011 AM 12:00:00 to 23-12-2011 AM 12:00:00 
    now = 23-12-2011 PM 05:26:54 to 23-12-2011 AM 12:00:00 
Run Code Online (Sandbox Code Playgroud)

Mar*_*uła 5

您可以使用 DateTime.Now.Date

根据文档,Date属性返回:与此实例具有相同日期的新对象,时间值设置为午夜12:00:00(00:00:00).