У меня есть следующий код, чтобы получить время UNIX от posix_timeboost :: posix_time :: time_duration overflow?
boost::posix_time::ptime time1(boost::gregorian::date(9999,12,31));
boost::posix_time::ptime epoch(boost::gregorian::date(1970,1,1));
boost::posix_time::time_duration diff = time1-epoch;
cout<<"A: "<<time1<<endl;
cout<<"B: "<<epoch<<endl;
cout<<"C: "<<diff<<endl;
unix_time = diff.total_seconds()
дает мне этот выход
9999-Dec-31 00:00:00
1970-Jan-01 00:00:00
-1347834:03:51.933722624
diff
Теперь не должно быть отрицательным числом. Как я могу рассчитать это право? Есть переполнение?
'долго long', но' diff' уже является отрицательным – user2071938
Это, вероятно, то, что вы ищете: https: //en.wikipedia .org/wiki/Year_2038_problem – stefaanv
Я не работаю с исходным 32-разрядным для unix-времени – user2071938