特定の日付の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'はコード内で実際には言及されていません。これはブーストの不足のようです。 –