PHP Неустранимая ошибка: вызов в функцию функции-члена () в булевом

Аварии:

<?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'); ?> 

Неверный формат?

Ни один из примеров не работает, поскольку у вас есть несколько ошибок:

  1. Вы забыли свой второй параметр в Datetime::createFromFormat()
  2. h:i:s должно быть H:i:s
  3. Ваша дата во втором примере разделяется символом a . не -

Исправления:

 <?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);