За последние 24 часа нас посетили 131629 программистов и 7812 роботов. Сейчас ищут 2537 программистов ...

Костыль для timestamp до 2050 года

Тема в разделе "PHP для новичков", создана пользователем Dimon2x, 9 сен 2017.

  1. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.199
    Симпатии:
    183
    Решил сделать таки способом, когда проверил, то слегка не совпадает, где косяк?

    PHP:
    1. $proverka = '2043-03-23';
    2.    
    3.     echo 'Дата ' . $proverka . '<br>';
    4.    
    5.     $lastYear = substr($proverka, 0, 4);
    6.    
    7.     if($lastYear < '2038') {
    8.         echo 'В формате timestamp ' . strtotime($proverka);
    9.     }
    10.    
    11.     elseif($lastYear >= '2038') {
    12.         $year37 = strtotime('2037-01-01');
    13.         $dif = (int)$lastYear - 2037;
    14.         $pribavka = 1970+$dif.'-01-01';
    15.         $ostatok = strtotime($pribavka);
    16.         $res = $year37+$ostatok;
    17.         echo 'В формате timestamp ' . $res;
    18.        
    19.         echo '<br>';
    20.        
    21.         echo 'В формате timestamp ' . (strtotime('2037-03-23') + (strtotime('1971-01-01') * 6));
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.497
    Симпатии:
    1.726
    Это слишком самонадеяно, считать, что сайты, которые мы кропаем в 2017, будут в том же виде нужны кому-то после 2038, поэтому я как-то не задумываюсь об этой проблеме
     
    Deonis и Fell-x27 нравится это.
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.841
    Симпатии:
    1.338
    Адрес:
    Лень
    PHP:
    1. $pribavka = 1970+$dif.'-01-01';
    тут ошибку не выдает ? при сложении любого рода нужно заключать в скобочки, если конечно не ошибаюсь. Вообще надеюсь что когда нибудь пустословные ученые оправдаются и метеорит долбанет по рашке такой силой, что задумываться про 2038 год не имеет смысла.
     
  4. xaker01

    xaker01 Активный пользователь

    С нами с:
    16 апр 2016
    Сообщения:
    210
    Симпатии:
    34
    Даже если вдруг даже до 2050 сайт доживет, скажем долгий контракт бизнес итд.
    Это не отменяет того что ты его 2050 раз перепишешь.
    Так как выход php 7 чего только стоил.
    Или отказ от mysql к mysqli/pdo
     
  5. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.012
    Симпатии:
    1.679
    Адрес:
    :сердА
    А потом запилят 128-битную архитектуру, и timestamp сможет вместить в себя еще пару тысячелетий.
     
  6. xaker01

    xaker01 Активный пользователь

    С нами с:
    16 апр 2016
    Сообщения:
    210
    Симпатии:
    34
    И в первый же день найдется человек который будет думать о пару тысячилетий наперед..
    Стоп какой человек, они еще что то делают >
     
  7. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.841
    Симпатии:
    1.338
    Адрес:
    Лень
    Хочу метеорит (с)
     
  8. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Астероид подойдёт? Тогда можно создать "Церковь Святого Апофиса", предложить всем прихожанам продать имущество и сдать деньги церкви, лично в руки Пастерю @MouseZver. По крайней мере, ждать 2036 года можно будет веселее где-нибудь на Бали ;)
     
  9. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.543
    Симпатии:
    623
    Никаких костылей не надо, надо использовать класс DateTime https://php.ru/manual/intro.datetime.html
    @Dimon2x я думаю этого хватит тебе, а если дождешься 128 бит - то диапазон увеличится еще в 18,5 квинтиллионов раз.