Вычитание месяцев / лет из ускорения :: posix_time :: ptime - PullRequest
3 голосов
/ 21 марта 2010

У меня есть 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;

Я получаю 1 марта, и если я пытаюсь:

ptime pp = p - days(30);

Я все еще получаю 1 марта, в то время как я хотел бы получить 28 февраля.
Как я могу достичь желаемого результата? (Я хотел бы получить желаемый результат также при вычитании месяца из 28, 29, 30 марта)

Ответы [ 2 ]

4 голосов
/ 21 марта 2010

boost :: posix_time :: ptime :: date () возвращает объект даты. Вы можете вызвать greg_year, greg_month и т. Д. Для этого объекта.

0 голосов
/ 21 марта 2010

Ну, я думаю, вы уже знаете, что не во всех месяцах 30 дней, поэтому вы не можете вычесть 30 дней вообще.

Вы должны спросить себя, что вы подразумеваете под "вычитать месяц".

...