从boost :: posix_time :: ptime减去月/年

时间:2010-03-21 15:14:57

标签: c++ datetime boost

我的boost::posix_time::ptime指向March 31st 2010,如下所示:

ptime p(date(2010, Mar, 31));

我想从这个日期减去一个月(可能还有几年)。从文档中我看到了这两个运算符:ptime operator-(time_duration)ptime operator-(days)但它们都不能用数月/年。如果我尝试做:

time_duration duration = hours(24 * 30);
ptime pp = p - duration;

我要三月一日,如果我正在尝试:

ptime pp = p - days(30);

我还要到3月1日,而我想要2月28日 我怎样才能达到理想的效果? (我希望在从3月28日,29日,30日减去一个月时也能获得理想的结果)

2 个答案:

答案 0 :(得分:4)

boost :: posix_time :: ptime :: date()运算符返回日期对象。您可以为此对象调用greg_year,greg_month等。

答案 1 :(得分:0)

嗯,我猜你已经知道并非所有月份都有30天所以你不能在30天内减去。

你应该通过“减去一个月”来问自己你的意思。