Я пытаюсь вычислить время между двумя датами boost :: gregorian. В настоящее время я просто использую разницу между двумя датами, давая мне date_duration для работы:
boost::gregorian::date rhs(2000, 1, 1);
boost::gregorian::date lhs(2005, 6, 15);
boost::gregorian::date_duration dd = lhs - rhs;
boost::gregorian::days daysOld(dd);
boost::gregorian::months monthsOld(...) // This is where I'm stumped
boost::gregorian::years yearsOld(...)
Ctor boost :: gregorian :: days может принимать date_duration, но я не могу найти способ создать аналогичное представление из date_duration для месяцев и лет. Из того, что я прочитал и увидел, кажется, что date_duration содержит только количество дней в интервале между двумя датами. Я надеялся, что это даст мне ненормализованных членов на годы, месяцы и дни. Например, с указанными выше датами, я ожидаю, что date_duration будет иметь поля, которые дают что-то вроде years = 5
, months = 65
, а также days = 1992
где каждое поле представляет общее количество времени, используя эту конкретную гранулярность времени. В существующем виде, по-видимому, существует только способ доступа к date_duration в виде количества дней между датами (путем вызова dd.days()
). Я что-то пропустил? Есть ли способ сделать это, используя boost :: gregorian или одну из других библиотек даты / времени?
Спасибо
Задача ещё не решена.
Других решений пока нет …