php date函数返回一个我没想到的结果

In my mysql db I got a timestamp field, the values are:

2013-01-30 01:15:00
2013-01-30 01:20:00

I use the date function to print it as 24HOUR:MINUTE format but I get a wrong time result.

mysql_query('SELECT time FROM locations ORDER BY time ASC');
...
echo "<td>" . date('H:i',$row['time']) . "</td>";

The output is: 00:33 for both records, why?

The second parameter for date() is a Unix timestamp.

Description

string date ( string $format [, int $timestamp = time() ] )

Returns a string formatted according to the given format string using the given integer timestamp or the current time if no timestamp is given. In other words, timestamp is optional and defaults to the value of time().

echo "<td>" . date('H:i', strtotime($row['time'])) . "</td>";

An alternative solution is to use DateTime:

$datetime = new DateTime($row['time']);
echo $datetime->format('H:i');

// or in PHP5.5+
echo (new DateTime($row['time']))->format('H:i');

Reference: