我试图让批次数量超过截止日期,批次数量接近截止日期(截止日期前2小时)。如果我在截止日期后一天,以下可以得到我。但是如何处理时间?
获得截止日期的批次数,以及截止日期前两小时的批次数(截止日期前2小时)
CustomerID;CustomerName;BatchDeadline
1;AAA;1
2;BBB;2
3;CCC;2
4;DDD;3
* BatchDeadline:BatchDate之后的天数,如果2表示批处理表中第二天的BatchDate。
BatchID;CustomerID;BatchDate
1;1;2014-12-10 8:00
2;2;2014-12-10 8:10
3;2;2014-12-11 10:20
4;1;2014-12-12 11:10
5;3;2014-12-12 11:12
6;3;2014-12-12 11:22
7;3;2014-12-12 11:23
int passedDeadline = 0;
int nearDeadline = 0;
foreach(customer c in customers)
{
foreach(Batch b in batches)
{
if (b.BatchDate < b.BatchDate(c.BatchDeadline * -1)
passedDeadline++;
}
}
答案 0 :(得分:1)
获取当前时间(因为当前时间一直在变化,所以不要在循环中获取它):
DateTime now = DateTime.Now;
计算您要与之比较的时间点:
DateTime deadline = b.BatchDate.AddDays(c.BatchDate);
DateTime nearDeadline = deadline.AddHours(-2);
现在只需比较表格与时间点的时间:
if (now > deadline) {
// passed the deadline
} else if (now >= nearDeadline) {
// near the deadline
}