число месяцев между двумя датами - использование даты повышения

Я использовал повышение:: грегорианский:: дата немного теперь.

Я вижу, что существуют связанные месяцы и годы и недельные типы продолжительности. Я вижу, как использовать известные продолжительности для усовершенствования данной даты.

Qu: Но как я могу получить различие между двумя датами в течение многих месяцев (или годы или недели)?

Я надеялся найти функцию как:

template<typename DURATION>
  DURATION date_diff<DURATION>(const date& d1,const date& d2);

Должна была бы быть некоторая обработка округления также.

Эта функция возвратилась бы, количество (говорят) целые месяцы между d1 и d2.

10
задан MartinP 27 April 2010 в 10:31
поделиться

1 ответ

Вы имеете в виду разницу между датами (09/12 - 08/05 = 01/07 = 19 месяцев) или разницу во времени ((date2_seconds - date1_seconds) / seconds_per_month)?

Для первого случая можно использовать аксессоры

greg_year date::year() const;
greg_month date::month() const;

Затем разница между датами в месяцах:

int months = (data2.year() - date1.year())*12 + date2.month() - date1.month()

Для второго случая есть оператор

date_duration date::operator-(date) const;

И date_duration имеет следующий полезный член:

long date_duration::days() const;

Итак вы можете сделать это так:

//date date1, date2
int months = (date2-date1).days()/30;
12
ответ дан 4 December 2019 в 00:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: