Axapta Ax 2009代码中的周天数扣减
表字段中有“开始日期”和“截止日期” 我们使用截止日期和起始日期的负数得到一个int值(Tot天) Totdays=Todate-FromDate 到目前为止还可以,但如果我们的工作日在从日期到今天的范围内,问题就会出现Axapta Ax 2009代码中的周天数扣减,axapta,dynamics-ax-2009,x++,Axapta,Dynamics Ax 2009,X++,表字段中有“开始日期”和“截止日期” 我们使用截止日期和起始日期的负数得到一个int值(Tot天) Totdays=Todate-FromDate 到目前为止还可以,但如果我们的工作日在从日期到今天的范围内,问题就会出现 如何编写X++代码来扣除范围内的工作日,并根据工作日获得总天数。两个日期之间的天数不包括周六和周日: static void WorkDayDiff(Args _args) { int i; Days workDayDiff(date d1, date d2)
如何编写X++代码来扣除范围内的工作日,并根据工作日获得总天数。两个日期之间的天数不包括周六和周日:
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))));
}
static void WorkDayDiff(Args\u Args)
{
int i;
工作日差异(日期d1、日期d2)
{
第y1天=dayofwk(d1);//第1周的第1天
y2天=dayofwk(d2);//第2周的第2天
日期t1=d1-y1;//d1之前的星期日
日期t2=d2-y2;//d2之前的星期日
天y3=(t2-t1)div 7*5;//星期日之间的工作日
y4天=分钟(y1-1,5);//d1之前的工作日
天y5=分钟(y2,5);//t2之后的工作日
返回y3-y4+y5-1;//d1和d2之间的工作日
}
;
setprefix(strFmt(“今天%1%2”,今天(),dayname(dayofwk(今天()))));
对于不包括周六和周日的两个日期之间的(i=-10;i天:
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))));
}
static void WorkDayDiff(Args\u Args)
{
int i;
工作日差异(日期d1、日期d2)
{
第y1天=dayofwk(d1);//第1周的第1天
y2天=dayofwk(d2);//第2周的第2天
日期t1=d1-y1;//d1之前的星期日
日期t2=d2-y2;//d2之前的星期日
天y3=(t2-t1)div 7*5;//星期日之间的工作日
y4天=分钟(y1-1,5);//d1之前的工作日
天y5=分钟(y2,5);//t2之后的工作日
返回y3-y4+y5-1;//d1和d2之间的工作日
}
;
setprefix(strFmt(“今天%1%2”,今天(),dayname(dayofwk(今天()))));
对于(i=-10;i)