web-dev-qa-db-fra.com

PHP Erreur fatale: appel à une fonction membre format () sur booléen

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?

16
user1539207

Aucun des deux exemples ne fonctionne car vous avez plusieurs erreurs:

  1. Vous avez oublié votre deuxième paramètre pour Datetime::createFromFormat()
  2. h:i:s devrait être H:i:s
  3. Votre date dans le deuxième exemple est séparée par un . 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');
?>
23
John Conde

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);
5
carla

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");
    }
0
teenage vampire