2013-04-15 10 views
8

डेटटाइम ऑब्जेक्ट बनाते समय मैं PHP को क्रैश कैसे रोक सकता हूं?PHP डेटटाइम अपवाद और त्रुटियों को संभालने में

$in = new DateTime($in); 
$out = new DateTime($out); 

$in और $out दोनों तो वे कुछ भी हो सकता एक रूप से आता है। मैं उपयोगकर्ता को कैलेंडर का उपयोग करने और जावास्क्रिप्ट के साथ तारीखों पर अवरुद्ध करने के लिए लागू करता हूं। क्या होगा यदि उपयोगकर्ता इस चेक को बाईपास कर सकता है?

यदि $in = "anything else other than a date" PHP पूरे पृष्ठ के प्रतिपादन को क्रैश और अवरुद्ध कर देगा।

यदि मैं दिनांक को पार्स करने में सक्षम नहीं हूं तो मैं इसे कैसे रोकूं और return(0)?

+0

प्रलेखन ("त्रुटियाँ/अपवाद" भाग) पढ़ें । http://php.net/manual/en/datetime.construct.php#refsect1-datetime.construct-errors –

उत्तर

11

चेक बाहर DateTime() पर प्रलेखन, यहाँ एक छोटा-सा स्निपेट है:

<?php 
try { 
    $date = new DateTime('2000-01-01'); 
} catch (Exception $e) { 
    echo $e->getMessage(); 
    exit(1); 
} 

echo $date->format('Y-m-d'); 
?> 

PHP Manual DateTime::__construct()

4

strtotime() प्रारूप खराब होने पर झूठी वापसी होगी, इसलिए खराब प्रारूपों को पकड़ना चाहिए।

if (strtotime($in) === false) 
{ 
    // bad format 
} 
+0

आकर्षण की तरह काम करता है ... + 1 –

+0

यह "30.11.-1" जैसे मानों के लिए काम नहीं करता है (जो 0000-00-00 है), var_dump तब int (-62169987600) है। –

3

अपवाद हैंडलिंग के बारे में क्या?

try { 
    $in = new DateTime($in); 
} catch (Exception $e) { 
    echo $e->getMessage(); 
    return(0); 
} 
3

दिनांक समय constructor अगर दिनांक/समय स्ट्रिंग पार्स नहीं किया जा रहा है कर सकते हैं एक अपवाद फेंक देते हैं। आप इसे पकड़ सकते हैं निम्नलिखित स्निपेट पर एक नज़र डालें:

try { 
    $dt = new DateTime('10th - 12th June 2013'); // bad date string 
} catch (Exception $e) { 
    var_dump($e->getMessage()); 
} 
संबंधित मुद्दे