1

boost ::date_durationをdoubleに変換する方法はありますか?私は次のコードを持っています:

date be; 
date bd;
days t = (be - bd);
std::cout << "days are:" << t << std::endl;

これは正常に機能し、noを返します。日の。しかし、私は年単位の値を取得したいので、tを365で割ると、0しか表示されsetprecision()ません。どちらも役に立ちませんでした。

4

1 に答える 1

3

あなたはおそらくboost::gregorian::daysオーバーロードという事実にとらわれていますoperator/。最初に を使用して整数に変換し、days()次に浮動小数点値で除算して浮動小数点除算を取得します。

#include <iostream>
#include <boost/date_time.hpp>

int main()
{
    boost::gregorian::date be(2000, 1, 1), bd(1950, 1, 1);
    boost::gregorian::days t = be - bd;
    std::cout << "days are: " << t << '\n'
              << "days/365 = " << t.days()/365.0 << '\n';
}

出力に注意してください。1 年は 365.00 日ではないため、結果は年数と等しくありません。

于 2011-08-29T20:52:51.003 に答える