Fatal error: Uncaught exception ‘”Eccezione” con il messaggio ” DateTime::__construct(): Failed to parse time string

Ottengo questo errore

( ! ) Fatal error: Uncaught exception ‘”Eccezione” con il messaggio “DateTime::__construct(): Failed to parse time string (06-28-2014 07:43:58 ) in posizione 0 (0): carattere Imprevisto’ in /Users/matt/Desktop/Likes/forgot/activate.php sulla linea 17

Quando cercando di fare questo

//DB query
$stmt = $con->prepare("SELECT token_created_at from reset WHERE token = :urltoken");
$stmt->bindValue(':urltoken', $_GET['token']);
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_ASSOC);
while($row = $stmt->fetch()) {
     $token_created_at = $row['token_created_at'];
}

//Remove after testing
echo $token_created_at;

$my_dt = new DateTime($token_created_at);

//Modify error
$expires_at = $my_dt->modify('+1 hour');

//Return current time to match
$current_time = date('m-d-Y H:i:s ', time());

Linea 17 è $my_dt = new DateTime($token_created_at); e questo è il mio tempo formato 06-28-2014 07:43:58.

Questo è come generare token_created_at, $time_gen = date('m-d-Y H:i:s ', time());.

InformationsquelleAutor | 2014-06-28



3 Replies
  1. 12

    La stringa della data si sta passando è non supportato del DateTime parser. È necessario creare un oggetto DateTime utilizzando createFromFormat. Questo metodo consente di specificare il formato personalizzato quando si crea un nuovo oggetto DateTime:

    $my_dt = DateTime::createFromFormat('m-d-Y H:i:s', $token_created_at);

    Se si sta ancora ricevendo un messaggio di errore che indica che il tuo $token_created_at non è nel formato specificato:

    $now = date('m-d-Y H:i:s'); //string(19) "06-28-2014 15:00:47"
    
    var_dump(DateTime::createFromFormat('m-d-Y H:i:s', $now));
    object(DateTime)#1 (3) {
      ["date"]=>
      string(19) "2014-06-28 15:00:47"
      ["timezone_type"]=>
      int(3)
      ["timezone"]=>
      string(13) "Europe/Berlin"
    }

    Modifica

    Vedo il problema – che la stringa di formato è uno spazio dopo s. Le stringhe di formato deve corrispondere esattamente:

    $my_dt = DateTime::createFromFormat('m-d-Y H:i:s ', $token_created_at);
  2. 1

    Aggiornato la mia risposta

    function date_time( $date ) {
        if( $date == "" ){
            return "";
        } else {
            //echo $date;
            $my_date  = DateTime::createFromFormat( 'm-d-Y H:i:s', $date );
            //echo '<pre>';
            //print_r($my_date);
            //echo '</pre>';
            $new_date = $my_date->format( 'Y-m-d H:i:s' );
            return $new_date;
        }
    }
    
    $save = date_time('06-28-2014 07:43:58');
    $my_dt = new DateTime( $save );
    
    //Modify error
    $expires_at = $my_dt->modify('+1 hour');
    $expires_date = $my_dt->format( 'Y-m-d H:i:s' );
    
    echo $expires_date;
    //Return current time to match
    $current_time = date('m-d-Y H:i:s', time());
    echo $current_time;
    • Ho ancora la stesso di errore….
    • prova ora.
    • $salvare = data_ora(’06-28-2014 07:43:58′); sarebbe una variabile…
    • Sì dovrebbe essere una variabile. È possibile assegnare un valore alla variabile & passare data_ora funzione. È hard coded questo per la vostra convenienza.
  3. 0

    Provare questo:

    $token_created_at = DateTime::createFromFormat("m-d-Y H:i:s", $token_created_at);
    $my_dt = new DateTime($token_created_at->format('Y-m-d H:i:s'));
    $expires_at = $my_dt->modify('+1 hour');

    Questo genera

    2014-06-28 08:43:58

Lascia un commento