C#如果它们在日期之间,则添加项目

时间:2011-10-20 12:55:30

标签: c# date

如果项目介于日期之间,我创建的程序将需要添加项目,这是我使用的代码:

if (day >= fromDay - 1 && day <= tillDay && month >= fromMonth - 1 && month <= tillMonth && year >= fromYear - 1 && year <= tillYear) { listBox1.Items.Add(OpenFiles[m_index].getFileName()); }

代码工作正常,但它有一个错误:它检查日,月和年是否在开始和结束之间。 所以即使你想在2011年2月19日至2011年4月15日期间添加一些东西,它也不会添加或看到任何东西。请帮帮我。

4 个答案:

答案 0 :(得分:5)

您应该比较日期而不是日期的组成部分:

// Presumably you can determine these once... (possibly rename to earliestValid
// and latestValid, or something like that?)
DateTime from = new DateTime(fromYear, fromMonth, fromDay);
DateTime to = new DateTime(toYear, toMonth, toDay);

// Then for each candidate...
...
DateTime date = new Date(year, month, day);
if (date >= from && date <= to)
{
    listBox1.Items.Add(...);
}

(当然,对于 date 类型而不是日期和时间,请查看Noda Time:)

答案 1 :(得分:0)

DateTime fromTime;
DateTime toTime;
DateTime currentTime = DateTime.Now;

if (currentTime >= fromTime && currentTime <= toTime)
{
 //to do some stuff
}

答案 2 :(得分:0)

它将以这种方式工作:

var dateFrom = new DateTime(yearFrom, monthFrom, dayFrom);
var dateTo = new DateTime(yearTo, monthTo, dayTo);
var actualDate = new DateTime(year, month, day);
if ((dateFrom < actualDate) && (actualDate < dateTo))
{
    // Do something
}

如果你单独比较日期的各个部分,它将无效(正如你已经发现的那样:-D)

答案 3 :(得分:0)

为什么不在from和toDate以及实际日期之外创建日期并执行此操作&gt;

if(fromDate < date && date <= tillDate)
{
}