Истинно вам говорю: во вторник 19 января 2038 в 03:14:07 по всемирному времени земля налетит на небесную ось! Тьфу ты! Весь мир перенесется в 1970 или 1901 год (кому как повезет) и виноваты в этом опять американцы
Да вот так точно! Да, до миллисекунды! Куда там всяким Нострадамусам, Вангам и прочим предсказателям.
Восьмой миллисекунды для многих компьютеров может не наступить, а если и наступит то уже в 1970 или 1901 ну это как повезет.
А помните про проблему 2000 года? Это когда вместо 4 знаков вводилась два последних и место 2000 года выдавался либо просто 00 либо это интерпретировалось как 1900 год. Короче все это приводило и могло привести к ошибкам. Ну вроде ничего особенного не случилось, все либо само исправилось, либо исправили.
Ну так вот грядет новая напасть! Проблема 2038 года, случится это 03:14:07, во вторник, 19 января 2038
Блин, да что же это такое? Почему именно это число?
Все дело в 32 битном представлении числа (32-битное целое со знаком) с одной стороны и началом время исчисления в UNIX подобных системах с другой.
В системе UNIX (а Linux ближайший родственник) принят стандарт POSIX этот стандарт описывает взаимодействие между операционной системой и программной средой, а так как большинство программ разрабатывалась и разрабатывается все же на языке Си и его производных то он и является непосредственном виновником данной проблемы. Создателем же языка Си был до мозга костей американец Деннис Ритчи (светлая память) из штата Нью-Йорк. И вот вам, виновники - американцы.
Но, пойдем дальше, время исчисления в UNIX подобных системах по стандарту POSIX начинается с 1 января 1970 года. Ну потому что операционная система (ОС) UNIX разрабатывалась в 70-х и была принята круглая ближайшая дата. Все что до этой даты (01.01.1970) отображается отрицательными числами, все что после - положительными. И разрядности в 32 бита хватит до 19 января 2038 и конкретно вот этого времени 03:14:07
Более позднее время заставит дату стать отрицательной, что воспримется программами и ОС как 1970 или как 1901 год - произойдет закольцовка времени. А вот вам и машина времени, и перенос в прошлое.
И еще мне вспомнился календарь Майя, помните он закончился у них 21 декабря 2012 года. И то же был ажиотаж вокруг этого, и то же думали о конце света. А я думая у них произошло что то подобное тому что происходит с нашими временными датами, в нашем времени. Ну или просто лень стало дальше рассчитывать или рисовать.
Проблема актуальна и для 32-разрядных версий Windows, большинство программ и там написано на Си, и для Linux до ядра 5.6, для СУБД MySQL
Но не все так плохо, мир постепенно переходит на 64-разрядные системы, в Windows 10 проблема решена, в Linux проблема решена (с версии 5.6 ядра). А там новый "конец света" и наступит он всего то ничего, через 292 миллиарда лет.