2

有没有办法只得到没有。2 个提升日期之间的工作日。

在下文中,我只得到日历日。

date begin_dt(2011,Aug,3);
date end_dt(day_clock::local_day());
days duration=end_dt-begin_dt;

std::cout<<"calendar days between begin & end date are: "<<duration<<std::endl;
4

2 回答 2

4

也许最简单的方法是从头到尾运行 day_iterator:

#include <iostream>
#include <boost/date_time.hpp>
int main()
{
    using namespace boost::gregorian;

    date begin_dt(2011,Aug,3);
    date end_dt(day_clock::local_day());
    days duration=end_dt-begin_dt;

    std::cout<<"calendar days between begin & end date are:" << duration << '\n';

    int cnt=0;
    for(day_iterator iter = begin_dt; iter!=end_dt; ++iter)
    {
        if(    iter->day_of_week() !=  boost::date_time::Saturday
            && iter->day_of_week() !=  boost::date_time::Sunday)
            ++cnt;
    }
    std::cout << "of them " << cnt << " are weekdays\n";
}
于 2011-09-08T04:02:16.190 回答
1

您可以开始减去下周开始的天数,并删除 1 或 2,具体取决于您是在星期六还是之前,还是星期天。然后,您可以将剩余的天数除以 7,将该数字乘以 2,然后减去天数。您还必须为其余部分提出理由。如果是 6(星期六),您必须再删除一个。不容易,但你明白了。

于 2011-09-07T22:03:54.413 回答