Испорчена обработка даты () в PHP - возможная ошибка? - PullRequest
0 голосов
/ 16 марта 2012

Я пишу проект со значительной обработкой дат в PHP.При этом я написал фрагмент кода, который постоянно работал со сбоями, используя функцию PHP date().Я выделил код (остальная часть кода в проекте не имеет значения), и вот он:

<?php
    date_default_timezone_set("GMT");
    echo date("F m, Y g:ia",strtotime("April 15, 2012 10:00am"));
    //Output: April 04, 2012 10:00am
    //Should be: April 15, 2012 10:00am
?>

Теоретически (я думаю) этот код должен вычислять метку времени 15 апреля 2012 г.в 10:00 утра.Кажется, это происходит правильно.Функция date() должна затем превратить эту дату в удобочитаемую дату в том же формате, который был введен.Это не так.Он выводит April 04, 2012 10:00am.В мае написано 5 мая;в июне, 6 июня.Поэтому я думаю, что есть какая-то ошибка, которая путает день месяца с самим месяцем.

С другой стороны, это может быть странная проблема, которую я никогда не рассматривал.Я ищу второе мнение / "ты так глуп, что делаешь Х неправильно".Если это ошибка, я сообщу об этом.Мне трудно поверить, что это ошибка, потому что с такими датами, которые появятся так скоро, я подумаю, что это уже было замечено.

1 Ответ

4 голосов
/ 16 марта 2012

http://php.net/manual/en/function.date.php

Нет, вы только что испортили строку формата даты - F m означает «Месяц (текстовый) Месяц (числовой) - печатается 04, потому что это номер месяца для апреля.

Вы хотите, чтобы j вместо этого печатал день месяца:

echo date("F j, Y g:ia",strtotime("April 15, 2012 10:00am")); // prints "April 15, 2012 10:00am" as expected.

Каждый раз, когда вы думаете, что обнаружили ошибку в инструментах, ОЧЕНЬ долго смотрите на свойкод!

...