我们在表格字段中有一个起始日期和截止日期。
我们通过使用 From Date 中的 To date 减号得到一个 int 值(Tot days)。
Totdays = Todate - FromDate;
到这里为止都很好,但是如果我们在从 date 到 Todate 之间有工作日,就会出现问题。
如何编写 X++ 代码以在范围内扣除工作日并根据工作日获取 TotDays。
我们在表格字段中有一个起始日期和截止日期。
我们通过使用 From Date 中的 To date 减号得到一个 int 值(Tot days)。
Totdays = Todate - FromDate;
到这里为止都很好,但是如果我们在从 date 到 Todate 之间有工作日,就会出现问题。
如何编写 X++ 代码以在范围内扣除工作日并根据工作日获取 TotDays。
两个日期之间的天数不包括周六和周日:
static void WorkDayDiff(Args _args)
{
int i;
Days workDayDiff(date d1, date d2)
{
Days y1 = dayofwk(d1); // Day of week 1
Days y2 = dayofwk(d2); // Day of week 2
date t1 = d1 - y1; // Sunday before d1
date t2 = d2 - y2; // Sunday before d2
Days y3 = (t2 - t1) div 7 * 5; // Work days between Sundays
Days y4 = min(y1-1,5); // Work days before d1
Days y5 = min(y2,5); // Work days after t2
return y3 - y4 + y5 - 1; // Work days between d1 and d2
}
;
setprefix(strFmt("Today %1 %2", today(), dayname(dayofwk(today()))));
for (i = -10; i <= 10; i++)
info(strFmt("Diff %1 %2 = %3", today()+i, dayname(dayofwk(today()+i)), int2str(workDayDiff(today(), today() + i))));
}
如果 d2 小于 d1,则计数为负数,但这可能不是您所期望的。