2015-05-26 3 views
3

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

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