За последние 24 часа нас посетили 22146 программистов и 1119 роботов. Сейчас ищут 733 программиста ...

Ошибка функции вфеу

Тема в разделе "PHP для новичков", создана пользователем IvanKut, 7 фев 2019.

  1. IvanKut

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

    С нами с:
    27 июл 2018
    Сообщения:
    258
    Симпатии:
    0
    Привет
    Такой код возвращает дату 07.02
    Почему такое может быть?
    Задача перевести дату из 04.02.19 в 04.02
    Правильный подход? как сделать чтобы даты не коверкал? Благодарю


    Код (Text):
    1. date("d.m", strtotime("04.02.19"))
     
  2. Artur_hopf

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

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    @IvanKut год полностью допиши, он не может придумать что у тебя там до 19 года. Может 1619, кто его знает.:
    PHP:
    1. date("d.m", strtotime("04.02.2019"))
     
  3. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
    на самом деле неожиданный эффект )))
     
  4. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    Он, конечно, неожиданный, но описанный в документации.
     
  5. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
    что-то я не нашел там упоминания почему день всегда равен 8, если год записан как "19" ))) шутка

    неожиданно хотябы потому, что есть зависимость обработки года от используемого разделителя. сравним германскую и американскую даты.
    Код (Text):
    1.  
    2. $ php -r 'echo date("d.m", strtotime("04.02.19"));'
    3. 08.02
    4. $ php -r 'echo date("d.m", strtotime("02/04/19"));'
    5. 04.02
    да, в доке написано. но это абсолютно неинтуитивно.

    (на самом деле там в date() используется "сегодня", в том случае если strtotime не справился. поэтому сейчас день выглядит как "8")