我注意到,boost::gregorian::date(1970,1,1).day_number()
回報2440588
,這是它的公曆日期。的boost ::陽曆:: date.day_number()返回Julian日期
這是一個錯誤還是我錯過了什麼?
我注意到,boost::gregorian::date(1970,1,1).day_number()
回報2440588
,這是它的公曆日期。的boost ::陽曆:: date.day_number()返回Julian日期
這是一個錯誤還是我錯過了什麼?
天日期之間的區別:
#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年1月1日:
auto epoch = boost::gregorian::gregorian_calendar::epoch();
std::cout << date(epoch.year, epoch.month, epoch.day) << "\n";
的introduction section in the documentation說:
的實現日曆是一個「proleptic公曆」,這之前的公曆的第一個採納擴展的歷史可以追溯到1582年的當前實現支持在1400 - 揚的日期範圍-01至9999-Dec-31。許多參考文獻將使用Julian日曆表示1582年之前的日期,因此如果歷史日期需要精確計算,則需要謹慎。請參閱Reingold的Calendrical Calculations & Dershowitz瞭解更多詳情。來自Calendrical Calculations的日期信息已用於交叉測試公曆日曆實施的正確性。
我也讀過。但是'boost :: gregorian :: date(1400,1,1).day_number()'是'2232400',所以真正的零日在此之前還是6000多年。而且您無法在1400年1月1日之前創建日期。 –
所以這並不能回答我的問題,因爲'day_number()'實際上並不包括'epoch()'以來的天數。你有什麼想法? –
似乎你對時代的定義可能是基於錯誤的假設(時代不是一個硬定義的術語)。除此之外,文件可能會帶來混淆。 – sehe
你到底想幹什麼?究竟是什麼問題? –
我想計算天數兩個日期之間的區別,我不知道什麼是「時代的開始」,是提升文檔(www.boost.org/doc/libs/1_62_0/doc/html/date_time/gregorian.html的最底部)。 –