【发布时间】:2010-12-14 09:57:38
【问题描述】:
我目前在思考将 MySQL 时间转换为特定时区的想法时遇到了问题,具体取决于用户的设置。
我所有的 MySQL 时间都以 UTC 时间存储,格式如下:
2009-11-08 17:06:40
查询时间后,我不太确定如何使用 PHP 将其转换为适当的时区。
因此,在上面的示例中,我想显示:
2009-11-08 09:06:40
这是我目前拥有的(可能需要修复):
$sql = 'SELECT date FROM mytable';
require("connection.php");
$result = mysql_db_query($DBname,$sql,$link);
while($row = mysql_fetch_assoc($result)) {
$dt_obj = new DateTime($row['date']);
$dt_obj->setTimezone(new DateTimeZone('PST'));
echo $dt_obj;
echo "<br>";
}
首先,我收到以下错误:
Catchable fatal error: Object of class DateTime could not be converted to string
其次,我很困惑我是否正确设置它以在正确的时区显示时间(在本例中为 PST)。
任何有关如何执行此操作的建议将不胜感激。谢谢!
更新:
我接受了 GZipp 的建议,并将代码修改为:
$dt_obj->setTimezone(new DateTimeZone('America/Los_Angeles'));
echo $dt_obj->format('Y-m-d H:i:s');
但是,我的时间(使用上面的示例)显示为:
2009-11-08 15:06:40
有什么想法会导致这种情况吗?
【问题讨论】:
标签: php mysql timezone timestamp