У меня есть коллекция временных меток unix, которые я конвертирую в даты повышения (1.65.1), но преобразования, кажется, ломаются, когда они заходят слишком далеко в будущем. Все, что происходит вокруг 2040 года и далее, похоже, каким-то образом возвращается к периоду после 1900 года.
Учитывая следующий код...
{
std::time_t t = 1558220400;
boost::gregorian::date date = boost::posix_time::from_time_t(t).date();
std::cout << "Date: " << date << std::endl;
}
{
std::time_t t = 2145500000;
boost::gregorian::date date = boost::posix_time::from_time_t(t).date();
std::cout << "Date: " << date << std::endl;
}
{
std::time_t t = 2500000000;
boost::gregorian::date date = boost::posix_time::from_time_t(t).date();
std::cout << "Date: " << date << std::endl;
}
... Я получаю следующий вывод...
Date: 2019-May-18
Date: 2037-Dec-27
Date: 1913-Feb-13
... однако я ожидаю следующего вывода...
Expected output:
Date: 2019-May-18
Date: 2037-Dec-27
Date: 2049-Mar-22
Есть ли что-то, что я делаю неправильно здесь?
time_t
..en.wikipedia.org /wiki/Year_2038_problem - person Ted Lyngmo   schedule 20.05.20192049-Mar-22
. Возможно, у них был баг. - person Ted Lyngmo   schedule 20.05.2019"date/date.h"
, чтобы получить решение. - person Howard Hinnant   schedule 20.05.2019