2013-12-10 45 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'])); 
}