2011-08-29 77 views
1

有沒有辦法將boost :: date_duration轉換爲double。 我有以下代碼:將boost :: gregorian :: date_duration轉換爲double

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

這工作正常,並返回no。的日子。但我想多年獲得價值,所以如果我將t除以365,它只顯示0. setprecision()也沒有幫助。

回答

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天。

+0

是的,你的代碼工作......非常感謝! – itcplpl

+0

指出......謝謝! – itcplpl