Как дата хранится внутри boost::gregorian::date?

В документации Boost говорится следующее: «Внутренне boost::gregorian::date хранится как 32-битный целочисленный тип». . Я нашел это по ссылке: http://www.boost.org/doc/libs/1_56_0/doc/html/date_time/gregorian.html .

Как вычисляется это 32-битное целое число? Это количество дней с начала эпохи (как это делает Joda в Java)?


person Santanu C    schedule 23.06.2016    source источник


Ответы (1)


Согласно документации, текущая реализация поддерживает даты в диапазоне с 14:00 января 01 по 9999 декабря 31

Анализируя код, класс boost::gregorian::date сохраняет дату как целое число uint32_t с именем days_. Для 1400-янв-01 это значение этого целого числа равно 2232400. Увеличение даты на один день означает, что это целое число увеличивается на одну единицу. Таким образом, разницу в днях между двумя датами можно вычислить, просто вычитая их целые числа.

person J. Calleja    schedule 27.09.2016