2009-11-16

Когда наступит конец света

Сейчас модно говорить о новом конце света который якобы наступит когда переполнится разрядная сетка календаря индейцев Майя - это наступит в 2012 году.

К чему я это? На всякий случай если конец света в 2012 году не наступит - то следующий нужно непременно ждать тогда когда переполнится разрядная сетка тридцатидвухбитного целого знакового числа, используемого для хранения даты в Unix системах.

Всем известно что для хранения даты в Unix используется так называемый unixtimestamp - число секунд прошедших с начала Unix эпохи - 1 января 1970 года. Это несложно проверить:

print date('r',0);

Thu, 01 Jan 1970 03:00:00 +0300

в большинстве компьютеров сейчас для хранения даты используется переменная типа int - размер которой равен размеру машинного слова - сейчас это 32 байта. Причем переменная эта знаковая, т.е. максимальное целое значение которое она может принимать - 0x7FFFFFFF или 2147483647. Несложно подсчитать что 2147483647 секунд это примерно 68 лет.

Понятно? Это вам не индейцы Майя, которые давно исчезли, но их календарь актуален до наших дней, тут всего каких то 68 лет - и каюк - прошла эра Unix.

Так когда же наступит конец света для всех 32-x битных Unix систем? Получить ответ очень просто:

print date('r',0x7FFFFFFF);

Tue, 19 Jan 2038 06:14:07 +0300

Это случится 19 января 2038 года ровно с шесть часов четырнадцать минут и семь секунд по московскому времени.

Готовьтесь.

 

комментарии:

 

Для того чтобы каждый раз не представляться можно войти как зарегистрированный пользователь.

Имя*

разрешены только теги br, font, span, p, strong, u, p, blockquote, a, div, img - остальные будут безжалостно удаляться