2008-10-29 50 views
2
$doba = explode("/", $dob); 

$date = date("Y-m-d", mktime(0,0,0, $doba[0], $doba[1], $doba[2])); 

上面的代碼將我通過的任何日期轉換爲1999-11-30,我知道它在昨天工作。當我回復$ doba時,日期是正確的。有人有主意嗎?PHP損壞了我的日期

乾杯

+0

您需要向我們展示您傳遞給我們的值,作爲$ dob讓我們給出明確的答案。 – davr 2008-10-29 14:58:44

回答

3

$doba的格式是什麼?記住mktime的語法是小時,分鐘,秒,月,日年這可能會令人困惑。

下面是一些例子:

$doba = explode('/', '1991/08/03'); 
echo(date('Y-m-d', mktime(0,0,0, $doba[1], $doba[2], $doba[0]); 

$doba = explode('/', '03/08/1991'); 
echo(date('Y-m-d', mktime(0,0,0, $doba[1], $doba[0], $doba[2]); 
2

這是一個有點矯枉過正在這種情況下使用mktime。假設$dob是按以下格式:

MM/DD/YYYY

你可以只以下,以acheive相同的結果(假設$dob始終是有效的):

$doba = explode("/", $dob); 
$date = vsprintf('%3$04d-%1$02d-%2$02d', $doba); 
3

或更容易:$date = date('Y-m-d', strtotime($dob))

0

如果你對上面說的jcoby有什麼問題,t他strptime()命令通過允許您指定格式來爲您提供更多控制。