2012-11-26 47 views
1

PHP DateTime類PHP的日期和時間日期

$x = '23120-7-7'; 
$x = new \DateTime($x); 
var_dump($x); 

的奇怪行爲給出

object(DateTime)#988 (3) { 
    ["date"]=> 
    string(19) "2000-07-07 23:12:00" 
    ["timezone_type"]=> 
    int(3) 
    ["timezone"]=> 
    string(3) "UTC" 
} 

我想驗證日期,但沒有在PHP只DateTime類。我如何檢查

我的日期有效嗎?

+0

使用正則表達式?我發現這個在線測試工具非常易於使用:http://gskinner.com/RegExr/然後看看屏幕右側,查看comunity選項卡,並找到適合您的日期格式的正則表達式。或者你自己打一個。這個正則表達式可以幫助你:(19 [0-9] {2} | 2 [0-9] {3}) - (0 [1-9] | 1 [012]) - ([123] 0 | [ 012] [1-9] | 31)$它的日期時間格式,如YYYY-MM-DD –

回答

2

使用date_create_from_format

$x = '23120-7-7'; 
$x = \DateTime::createFromFormat('Y-m-d', $x); 
var_dump($x); 

輸出:

bool(false) 

要查看錯誤細節:

$errors = DateTime::getLastErrors(); 
var_dump($errors); 

輸出:

array(4) { 
    ["warning_count"]=> 
    int(1) 
    ["warnings"]=> 
    array(1) { 
    [7]=> 
    string(27) "The parsed date was invalid" 
    } 
    ["error_count"]=> 
    int(2) 
    ["errors"]=> 
    array(2) { 
    [4]=> 
    string(40) "The separation symbol could not be found" 
    [7]=> 
    string(13) "Trailing data" 
    } 
} 
0

如果您想直接回答,可以使用「checkdate」方法。首先使用短劃線( - )爆炸日期,或許,我不知道你使用的是什麼樣的日期,然後使用checkdate。

0

嘗試將其轉換爲timestamp然後設置一個新的日期與您需要的格式日期(「Y-M-d」,時間戳),你檢查錯誤