Axapta Ax 2009代码中的周天数扣减

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)

表字段中有“开始日期”和“截止日期”

我们使用截止日期和起始日期的负数得到一个int值(Tot天)

Totdays=Todate-FromDate

到目前为止还可以,但如果我们的工作日在从日期到今天的范围内,问题就会出现


如何编写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)