2013-12-10 46 views
-1

這裏是一個數組的var_dump稱爲$events爲什麼date()返回一個意外的值?

array (size=3) 
    0 => 
    array (size=4) 
     'weekday' => string '0' (length=1) 
     'start_time' => string '2013-12-09 12:00:00' (length=19) 
     'name' => string 'Lunch' (length=5) 
     'location' => string '1' (length=1) 
    1 => 
    array (size=4) 
     'weekday' => string '0' (length=1) 
     'start_time' => string '2013-12-09 17:00:00' (length=19) 
     'name' => string 'Dinner' (length=6) 
     'location' => string '3' (length=1) 
    2 => 
    array (size=4) 
     'weekday' => string '1' (length=1) 
     'start_time' => string '2013-12-09 08:00:00' (length=19) 
     'name' => string 'Breakfast' (length=9) 
     'location' => string '2' (length=1) 

當我運行以下命令:

foreach ($events as $event) { 
    echo $event['start_time'] . ', ' . date('g:i a', $event['start_time']); 
} 

這裏就是我得到:

2013-12-09 12:00:00, 4:33pm 
2013-12-09 17:00:00, 4:33pm 
2013-12-09 08:00:00, 4:33pm 

我希望:

2013-12-09 12:00:00, 12:00pm 
2013-12-09 17:00:00, 5:00pm 
2013-12-09 08:00:00, 8:00am 

爲什麼每次撥打date()都會返回相同的值?

回答

0

date()的第二個參數應該是數字時間戳。相反,你給它一個完整的日期,它試圖解析爲一個數字。從那得到2013秒33分33秒33秒。在UTC-8時區出現在前一天下午4點之後的33分鐘內......基本上它會導致無意義的結果。

嘗試在字符串中使用strtotime

echo $event['start_time'] . ', ' . date('g:i a', strtotime($event['start_time'])); 
+0

感謝說明把'4:33 pm'價值來自何處。記住孩子,mySQL timestamp!= UNIX時間戳。 –

4

需要放入date()函數的日期爲unix時間戳。

foreach ($events as $event) { 
    echo $event['start_time'] . ', ' . date('g:i a', strtotime($event['start_time'])); 
}