4

这就是使用“两天前”获得的方式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);

如何计算代表“上周一”的日期?

4

1 回答 1

5

使用previous_weekday

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

编辑:添加-days(1)以避免返回作为参数给出的日期,因为“上周一”可能永远不会意味着周一的“今天”(请参阅​​文档)。这也是完成“N 天前”起点的一种更短的方法。

于 2015-05-26T23:29:05.967 回答