如何处理日期

时间:2014-12-11 12:46:40

标签: c#

我试图让批次数量超过截止日期,批次数量接近截止日期(截止日期前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++;
  }
}

1 个答案:

答案 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
}