如何在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
您可以使用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属性进行比较