Используя boost :: date, как мне вычислить «в прошлый понедельник»?

Вот как можно получить «два дня назад», используя 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);

Как вычислить дату, которая представляет «последний понедельник»?

3

Решение

использование previous_weekday:

using namespace boost::gregorian;
auto last_monday = previous_weekday(today-days(1), greg_weekday(Monday));

Редактировать: добавленной -days(1) чтобы не возвращать дату, указанную в качестве аргумента, поскольку «последний понедельник», вероятно, никогда не будет означать «сегодня» в понедельник (см. документы). Это также более короткий способ выполнить начальную точку «N дней назад».

3

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector