2014-06-28 5 views
5

मैं इस त्रुटि मिलती है विफलगंभीर त्रुटि: न आया हुआ अपवाद संदेश के साथ 'दिनांक समय' अपवाद ':: __ निर्माण(): समय स्ट्रिंग पार्स करने

(!) 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

जब यह

//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()); 

लाइन करने का प्रयास कर 17 $my_dt = new DateTime($token_created_at); है और यह मेरा समय प्रारूप 06-28-2014 07:43:58 है।

इस प्रकार मैं token_created_at, $time_gen = date('m-d-Y H:i:s ', time()); उत्पन्न करता हूं।

उत्तर

6

दिनांक स्ट्रिंग आप गुजर रहे हैं not supported दिनांक समय पार्सर द्वारा है अपडेट किया गया। आपको createFromFormat का उपयोग कर डेटटाइम ऑब्जेक्ट बनाना होगा। इस विधि जब एक नया दिनांक समय वस्तु बनाने आप कस्टम प्रारूप निर्दिष्ट करने के लिए अनुमति देता है:

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

संपादित करें:

आपको अभी भी त्रुटि का अर्थ है कि आपके $token_created_at स्वरूप में नहीं है मिल रहे हैं आप निर्दिष्ट:

$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

मुझे आपकी समस्या दिखाई देती है - स्वरूप स्ट्रिंग में s के बाद एक स्थान है। प्रारूप तार होना चाहिए बिल्कुल ही:

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

मेरा उत्तर

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

मैं अभी भी _same_ त्रुटि मिलती है .... –

+0

@ user302975 अब कोशिश करो। –

+0

$ save = date_time ('06 -28-2014 07:43:58 '); एक चर होगा ... –

0

इस प्रयास करें:

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

हो जाएगा ताकि उत्पन्न

2014-06-28 08:43:58 
संबंधित मुद्दे

 संबंधित मुद्दे