to_utm.pl - "Day too big" Welcome to the future!

Технические вопросы по UTM 5.0
Ответить
Аватара пользователя
Bell
Сообщения: 5
Зарегистрирован: Вс окт 02, 2005 01:03

to_utm.pl - "Day too big" Welcome to the future!

Сообщение Bell »

Может у кого есть или возникнет такая проблема, вот решил поделиться опытом.
При конвертации базы из UTM4 в UTM5 с помощью to_utm.pl возникла следующая ошибка:

Converting traffic history...Day too big - 25465 > 24855
Sec too small - 25465 < 83752
Sec too big - 25465 > 22447
Cannot handle date (0, 0, 22, 21, 8, 2039) at ./to_utm.pl line 770

И тут я и столкнулся напрямую с проблемой 2039 года, точнее 19 января 2038 года.
Суть «Проблемы 2038» заключается в том, что для хранения значения времени используются 32 двоичных разряда, следовательно, максимальное значение переменной равно 2 в 31-й степени минус 1, то есть 2 147 483 647. И момент, когда наступит переполнение, выпадает на 19 января 2038 года. Очевидно это ошибка прокаралась в мою старую базу но все равно не приятно и решать надо.

Решение:
Специально для этих целей уже есть perl модуль Time::Local::Extended который нам и нужно установить. После установки модуля правим to_utm.pl в строке 9:

Код: Выделить всё

use Time&#58;&#58;Local;
заменяем на
use Time&#58;&#58;Local&#58;&#58;Extended qw&#40;&#58;ALL&#41;;
Запускаем заново to-utm.pl и наслаждаемся результатом 8-)

Ответить