Я пытаюсь преобразовать следующие даты:
$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 даты неверны, и только последняя является правильной.
Как обойти эту ошибку преобразования и вернуть правильную дату ??
Yzhis
является не действительный формат даты. В следствии strtotime()
терпит неудачу и возвращает ложь, или, что еще хуже, значение думает это дата может быть преобразована в дату, но это действительно не имеет смысла.
Если вы собираетесь использовать нестандартный формат (что вам, вероятно, не нужно делать), вам нужно будет использовать DateTime::createFromFormat()
чтобы быть в состоянии справиться с этим должным образом.
$old_date = $myDate;
$middle = DateTime::createFromFormat('Yzhis', $old_date);
$new_date = $middle->format('Y-m-d');
Других решений пока нет …