Вот как можно получить «два дня назад», используя boost::date
:
boost::gregorian::date today = boost::gregorian::day_clock::local_day();
boost::date_time::day_functor<boost::gregorian::date> day_offset(-2);
boost::gregorian::date modified = today + day_offset.get_offset(today);
Как вычислить дату, которая представляет «последний понедельник»?
использование previous_weekday:
using namespace boost::gregorian;
auto last_monday = previous_weekday(today-days(1), greg_weekday(Monday));
Редактировать: добавленной -days(1)
чтобы не возвращать дату, указанную в качестве аргумента, поскольку «последний понедельник», вероятно, никогда не будет означать «сегодня» в понедельник (см. документы). Это также более короткий способ выполнить начальную точку «N дней назад».