Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет Леонид Каганов ([info]lleokaganov)
@ 2024-01-17 03:32:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
PHP: ошибка 2038 года
взято отсюда: https://lleo.me/dnevnik/2024/01/17

Предыстория — ваял небольшую софтинку, [ ТЕКСТ ПОД КАТОМ: Доступен только в оригинальной заметке на сайте ] Короче, сделал выбор плюс к текущей дате: час, неделя, месяц, год, ну или 50 лет — это типа вечно. И тут выясняется... С JS все норм. Но PHP, на котором я по-быстрому накидал бэкенд, принялся при подсчете +50 лет выдавать ошибку. Мол, хуле в функцию data() ты передаешь float, когда ожидается int? Штааа?! Какой float в PHP, сроду там типы не различались?! И внезапно выясняется, что в PHP есть некий параметр PHP_INT_MAX, и на моем сервере он int32 и его максимум 2147483647. Что в случае date('Y-m-d--H-i-s',PHP_INT_MAX) соответствует числу секунд UnixTime для даты 2038-01-19 06:14:07...

Не то, чтоб я собирался сильно долго жить и нужна была вечная игла для примуса, как говорил в таких случаях Остап Бендер. Но интересно осознавать, что через 14 лет и 4 дня жители Британии встали рано в 6 часов — у бэкендов нет часов! Ну это у них там в Британии будет 6 утра, у нас в Ингрии уже наверно 9 или 10 часов утра будет. А сколько будет в Москве и будет ли вообще — неизвестно. Как думаете, исправят PHP-шники ошибку функции data() или к тому времени сам PHP уйдет в музей древней хуйни?