2002-03-04 16:12:46 UTC
Конечно, заголовок этой заметки просто шутка, но маленькая доля правды в нем есть.
Разбирая работу оператора ^calendar, который загружает в текущую таблицу календарь на месяц или неделю для выбранного периода, я решил узнать, в какой же день мой день рождения был в 1917 году? Я получил error, — работа с датами в прошлом (до 1970 года) была невозможна.
Бог с ним с прошлым, — решил посмотреть в будущем. Сначала попробовал 9999 год, — облом, дальше меньше и меньше, пока, наконец, опытным путем выяснилось, что последний год, для которого работает ^calendar – это 2037 и последний месяц, который загружается в контекст нормально, — это январь 2038 года, а далее неизвестность (возможно конец света). А так хотелось узнать, в какой день недели мне будет 100 лет :).
И тут до меня дошло, — я слышал где-то, что время в С исчисляется в секундах начиная с 1 января 1970 года. Достав, калькулятор посчитал, — что за период с 1970 до 2038 года будет 231 секунд. Данная проблема представляется более серьезной, нежели чем пресловутая проблема 2000 года, поскольку все основные операционные системы и весь «серьезный» софт написаны на С и учитывая печальный опыт прошлого, сильно сомневаюсь что что-либо радикально изменится за этот период в этой области.
Можно конечно сделать это число секунд равным 2127 или даже 2255, но это же надо брать исходники и перекомпилировать заново весь софт! Уже даже сейчас трудно представить какой же это гигантский труд, что будет дальше, — покажет время, но на всякий случай буду готовиться к концу света.
PS: Да чуть не забыл сказать, что работу оператора ^calendar я тестировал на примере “вечного” календаря, взятом на сайте парсера из соответствующего раздела.