我使用提升日期時間來計算特定日期的unix時間。 在大多數情況下,返回的值是正確的,但有時候計算的 秒數不正確。將ptime提升爲unix時間戳轉換錯誤
這是一個例子:
boost::posix_time::ptime t(boost::gregorian::date(1900, 1, 1));
boost::posix_time::ptime epoch(boost::gregorian::date(1970, 1, 1));
boost::posix_time::time_duration dur;
dur = t - epoch;
int tstamp = dur.total_seconds();
if (t < epoch) tstamp = -tstamp ;
期望值是-2208902400,但我得到-2085978496。 你有解決這個問題的方法嗎?
不是很明顯 - 在我的系統上''time_t'是64位,我得到了32位錯誤。實際上在代碼中甚至沒有提到'time_t'。這似乎是一個不足之處。 – 2012-04-26 13:37:50