Se bloque sur:
<?php
$date = "13-06-2015 23:45:52";
echo Datetime::createFromFormat('d-m-Y h:i:s', $date)->format('Y-m-d h:i:s');
?>
Erreur fatale PHP: appel à une fonction membre format () sur booléen
Mais avec d'autres dates, ça marche bien:
<?php
$date = "10.06.2015 09:25:52";
echo Datetime::createFromFormat('d-m-Y h:i:s', $date)->format('Y-m-d h:i:s');
?>
Mauvais format?
Aucun des deux exemples ne fonctionne car vous avez plusieurs erreurs:
Datetime::createFromFormat()
h:i:s
devrait être H:i:s
.
pas un -
Correctifs:
<?php
$date = "13-06-2015 23:45:52";
echo DateTime::createFromFormat('d-m-Y H:i:s', $date)->format('Y-m-d h:i:s');
$date = "10.06.2015 09:25:52";
echo DateTime::createFromFormat('d.m.Y H:i:s', $date)->format('Y-m-d h:i:s');
?>
Dans mon cas, j'obtenais cette erreur car j'utilisais microtime(true)
comme entrée:
$now = DateTime::createFromFormat('U.u', microtime(true));
Dans les moments spécifiques où microtime
renvoie un flottant avec uniquement des zéros comme décimales, cette erreur est apparue.
J'ai donc dû vérifier si ses décimales et ajouter une partie décimale:
$aux = microtime(true);
$decimais = $aux - floor($aux);
if($decimais<=10e-5) $aux += 0.1;
$now = DateTime::createFromFormat('U.u', $aux);
MODIFIER :
En raison de la précision en virgule flottante, le sol apporte parfois un plancher incorret, j'ai donc dû utiliser une approche plus simple:
$aux = microtime(true);
$now = DateTime::createFromFormat('U.u', $aux);
if (is_bool($now)) $now = DateTime::createFromFormat('U.u', $aux += 0.001);
Dans mon cas, j'ai envoyé une valeur vide dans le champ de saisie et l'erreur get
solution:
if ($this->input->post('date_fo_return') != "") {
$date_fo_return = $this->input->post('date_fo_return');
$date_fo_return2 = DateTime::createFromFormat('d/m/Y', $date_fo_return);
$data['date_fo_return'] = $date_fo_return2->format("Y-m-d H:i:s");
}