В документации Boost говорится следующее: «Внутренне boost :: gregorian :: date хранится как 32-битный целочисленный тип». , Я нашел это по ссылке: http://www.boost.org/doc/libs/1_56_0/doc/html/date_time/gregorian.html .
Как вычисляется это 32-битное целое число? Это количество дней с начала эпохи (как это делает Джода в Java)?
От документация, текущая реализация поддерживает даты в диапазоне от 1400-Jan-01 до 9999-Dec-31
Анализируя код, класс boost :: gregorian :: date сохраняет дату как целое число uint32_t с именем days_. Для 1400-янв-01 это значение этого целого числа равно 2232400. Приращение на один день означает, что это целое число увеличивается на одну единицу. Таким образом, разницу в днях между двумя датами можно рассчитать, просто вычтя их целые числа.
Других решений пока нет …