Не удалось преобразовать дату (‘Yzhis’) в Y-m-d в переполнении стека

Я пытаюсь преобразовать следующие даты:

$myDate=

201373055607

201373055616

201594035728

201373102215

2013160023556

так далее…

Они созданы этой функцией:

date('Yzhis')

И я хочу преобразовать их в этот формат: «Y-м-д»
Итак, я использовал этот код:

$old_date = $myDate;

$middle = strtotime($old_date);

$new_date = date('Y-m-d', $middle);

И это возвращает мне следующее:

5607-08-17

5616-08-17

5728-08-17

1970-01-01

2013-06-09

так далее…

Как видите, первые 4 даты неверны, и только последняя является правильной.

Как обойти эту ошибку преобразования и вернуть правильную дату ??

0

Решение

Yzhis является не действительный формат даты. В следствии strtotime() терпит неудачу и возвращает ложь, или, что еще хуже, значение думает это дата может быть преобразована в дату, но это действительно не имеет смысла.

Если вы собираетесь использовать нестандартный формат (что вам, вероятно, не нужно делать), вам нужно будет использовать DateTime::createFromFormat() чтобы быть в состоянии справиться с этим должным образом.

$old_date = $myDate;
$middle = DateTime::createFromFormat('Yzhis', $old_date);
$new_date = $middle->format('Y-m-d');

демонстрация

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]