2014-01-09 48 views
1

我想計算boost::posix_time:ptime兩個時間戳之間的秒差。但是,由於時間戳包含達微秒,結果可能會出現,這不是我所期望的。boost time_duration總秒數計算

boost::posix_time::time_period oPeriod(start, end); 
int32_t iDuration = oPeriod.length().total_seconds(); 

printf("AAAA [%s], [%s], [%d]\n", boost::posix_time::to_iso_string(start).c_str(), boost::posix_time::to_iso_string(end).c_str(), iDuration); 

輸出:

AAAA [20131030T232150.619049], [20131030T232152.558225], [1] 

我要的是截斷的第二的分數,然後計算差值。所以上面的結果應該是2而不是1.

有沒有辦法做到這一點?

回答

0

,據我所知沒有直接的路線,你必須做減法之前刪除來自startendfractional_seconds(),即

start -= start.fractional_seconds(); 
end -= end.fractional_seconds(); 
auto diff = end - start; 

(注:我假設startendtime_duration,如果他們是ptime,那麼你必須先從他們那裏得到一天的時間......)