我注意到boost::gregorian::date(1970,1,1).day_number()
返回2440588
,这是其朱利安日期。
这是一个错误还是我错过了什么?
答案 0 :(得分:0)
日期之间的差异:
<强> Live On Coliru 强>
#include <boost/date_time/gregorian/greg_date.hpp>
#include <iostream>
int main() {
using boost::gregorian::date;
date a(1712, 1, 1);
date b(1713, 1, 1);
std::cout << (b - a).days() << "\n"; // 366, includes 30th February 1712
}
时代是1400-01-01:
<强> Live On Coliru 强>
auto epoch = boost::gregorian::gregorian_calendar::epoch();
std::cout << date(epoch.year, epoch.month, epoch.day) << "\n";
introduction section in the documentation说:
实施的日历是一个“公历日历”,它延续了格里高利历在1582年首次采用之前的日期。当前的实施支持日期范围为1400-Jan-01至9999-Dec-31。许多参考文献将使用Julian日历表示1582年之前的日期,因此如果需要在历史日期进行准确计算,请务必谨慎。参见Reingold的“日历计算”和&amp; Dershowitz了解更多细节。来自Calendrical Calculations的日期信息已被用于交叉测试公历实现的正确性。