Аварии:
<?php $date = "13-06-2015 23:45:52"; echo Datetime::createFromFormat('dmY h:i:s', $date)->format('Ymd h:i:s'); ?>
PHP Неустранимая ошибка: вызов в функцию функции-члена () в булевом
Но с другими датами хорошо работает:
<?php $date = "10.06.2015 09:25:52"; echo Datetime::createFromFormat('dmY h:i:s', $date)->format('Ymd h:i:s'); ?>
Неверный формат?
Ни один из примеров не работает, поскольку у вас есть несколько ошибок:
Datetime::createFromFormat()
h:i:s
должно быть H:i:s
.
не -
Исправления:
<?php $date = "13-06-2015 23:45:52"; echo Datetime::createFromFormat('dmY H:i:s', $date)->format('Ymd h:i:s'); $date = "10.06.2015 09:25:52"; echo Datetime::createFromFormat('dmY H:i:s', $date)->format('Ymd h:i:s'); ?>
В моем случае я получал эту ошибку, потому что я использовал microtime(true)
качестве входных данных:
$now = DateTime::createFromFormat('U.u', microtime(true));
В определенные моменты, когда microtime
возвращает float с нулями как десятичными знаками, эта ошибка появилась.
Поэтому мне пришлось проверить, если его десятичные числа и добавить десятичную часть:
$aux = microtime(true); $decimais = $aux - floor($aux); if($decimais<=10e-5) $aux += 0.1; $now = DateTime::createFromFormat('U.u', $aux);
EDIT :
Из-за точности с плавающей запятой иногда пол приносит пол безумца, поэтому мне пришлось использовать более прямой подход:
$aux = microtime(true); $now = DateTime::createFromFormat('U.u', $aux); if (is_bool($now)) $now = DateTime::createFromFormat('U.u', $aux += 0.001);