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)