ブースト日時を使用して、特定の日付の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になります。この問題の回避策はありますか?