使用提升日期的工作日持续时间

itc*_*lpl 2 c++ boost boost-date-time

有没有办法只得到没有。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;
Run Code Online (Sandbox Code Playgroud)

Cub*_*bbi 5

也许最简单的方法是从头到尾运行一个 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";
}
Run Code Online (Sandbox Code Playgroud)

  • 创建一个“is_weekday”函数,这将成为如何使用“count_if”的一个很好的例子。 (2认同)