2012-12-07 42 views
1

我有兩個UTC時間戳(時間自1.1.1970)轉換UTC時間差成字符串升壓

我想顯示爲字符串%H它們之間的區別:%M:%S例如。 13時34分十二秒

目前我已經得到了這一步

time_facet *facet = new time_facet("%H:%M:%S"); 
cout.imbue(locale(cout.getloc(), facet)); 

ptime now = boost::date_time::not_a_date_time; 
now = boost::posix_time::microsec_clock::universal_time(); 

ptime timerEnd = from_time_t(timestamp); 
boost::posix_time::time_period tp(now, timerEnd); 

//what now? 

回答

3

這樣的事情會做的工作,你不需要TIME_PERIOD

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

namespace pt = boost::posix_time; 

int main() { 
    //format for ptime 
    pt::time_facet *facet = new pt::time_facet("%H:%M:%S"); 
    //format for time_duration 
    facet->time_duration_format("%H:%M"); 

    std::cout.imbue(std::locale(std::cout.getloc(), facet)); 

    time_t timestamp1 = 79387320; 
    time_t timestamp2 = 79377320; 
    pt::time_duration td = pt::from_time_t(timestamp1) - pt::from_time_t(timestamp2); 

    std::cout << td << std::endl;  
    return 0; 
} 
+0

要命三江源 – Middy

+0

該死...答案是錯誤的...我應該檢查pt :: time_facet * facet = new pt :: time_facet(「%H:%M」);也輸出「02:46:40」 – Middy

+0

對,構造函數只設置了ptime的格式,而不是time_duration,我編輯了答案 – kinnou02