将boost :: gregorian :: date_duration转换为double

时间:2011-08-29 20:15:11

标签: c++ boost boost-date-time

有没有办法将boost :: date_duration转换为double。 我有以下代码:

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

这很好,并返回no。天。但我希望得到多年的价值,所以如果我将t除以365,它只显示0. setprecision()也没有帮助。

1 个答案:

答案 0 :(得分: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';
}

请注意输出:您的结果不等于年数,因为一年不是365.00天。