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

本文关键字:两个 没有时间 日期 比较 | 更新日期: 2023-09-27 18:18:37

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

If the dueDate > now or dueDate = now 
Then Fine Amount = something.
Else Fine Amount = 0

我写的代码如下:

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;
}

dueDate = 23-12-2011 AM 12:00:00
now = 23-12-2011 PM 05:26:54

我想比较:

dueDate = 23-12-2011
now = 23-12-2011

如何删除其中的时间?

添加下面的代码得到结果。但是它的代码太长了。: -

 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;
                             }
                        }
                    }

有没有办法缩短这个代码?这个问题的答案是

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

这datetime。日期

 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 

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

您可以使用DateTime.Now.Date

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

c#中的DateTime类通过简单地使用<, >==操作符来支持比较。按照上面写的伪代码做

dueDate.Date >= DateTime.Now.Date

虽然您可以使用DateTime.Date属性,但通常将某个日期与日期范围进行比较是一种良好的做法:

startDate <= someDate && someDate < endDate

可以使用DateTime。属性获取DateTime值的日期组件:

if (dueDate.Date >= DateTime.Now.Date)

使用DateTime对象的Date属性进行比较