2014-06-28 8 views
5

ottengo questo erroreFatal error: eccezione Uncaught 'Eccezione' con il messaggio 'DateTime :: __ construct(): Impossibile analizzare la stringa tempo

(!) Fatal error: Uncaught exception 'Exception' with message 'DateTime::__construct(): Failed to parse time string (06-28-2014 07:43:58) at position 0 (0): Unexpected character' in /Users/matt/Desktop/Likes/forgot/activate.php on line 17

Quando si cerca 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 formato orario 06-28-2014 07:43:58.

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

risposta

6

La stringa di data si sta passando è not supported dal parser DateTime. È 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); 

Edit:

Se si sta ancora ricevendo un errore che significa che il vostro $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" 
} 

Edit2

Vedo il tuo problema - la stringa di formato ha uno spazio dopo s. Le stringhe di formato devono essere esattamente lo stesso:

$my_dt = DateTime::createFromFormat('m-d-Y H:i:s ', $token_created_at); 
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; 
+0

ho ancora ottenere l'errore nello _stesso_ .... –

+0

@ user302975 prova ora. –

+0

$ save = date_time ('06 -28-2014 07:43:58 '); sarebbe una variabile ... –

0

Prova questa:

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

Questa volontà genera

2014-06-28 08:43:58