Boost のドキュメントには次のように書かれています。. リンクからこれを見つけました:http://www.boost.org/doc/libs/1_56_0/doc/html/date_time/gregorian.html。
この 32 ビット整数はどのように計算されますか? エポックからの日数ですか(JodaがJavaで行うように)?
Boost のドキュメントには次のように書かれています。. リンクからこれを見つけました:http://www.boost.org/doc/libs/1_56_0/doc/html/date_time/gregorian.html。
この 32 ビット整数はどのように計算されますか? エポックからの日数ですか(JodaがJavaで行うように)?
ドキュメントによると、現在の実装では、1400-Jan-01 から 9999-Dec-31 の範囲の日付がサポートされています。
コードを分析すると、クラス boost::gregorian::date は日付を days_ という名前の uint32_t 整数として格納します。1400-Jan-01 の場合、この整数の値は 2232400 です。日付を 1 日増やすとは、この整数が 1 単位増えることを意味します。したがって、2 つの日付間の日数の差は、整数を減算するだけで計算できます。