PHP - 更改整个站点的时区显示

时间:2014-03-27 10:48:54

标签: php datetime

我有一个网站,使用date()功能显示数据库中的日期。现在我必须添加对各种时区的支持。需要更改时间仅用于前端的显示目的。我使用了date_default_timezone_set('Europe/London'),但它并没有影响日期输出 - 它与数据库中的相同。函数date_default_timezone_get()表示时区设置成功,但日期输出保持不变。如何更改日期的全局输出?可以在不编辑网站中的所有date()功能的情况下完成吗?

完整示例:

date_default_timezone_set('Europe/London');
echo date_default_timezone_get(); //shows Europe/London
$date_from_db = '2014-02-02 12:34:05'; //this is generally taken from database
echo date('Y-m-d H:i:s',strtotime($date_from_db));

输出与以前相同。

2 个答案:

答案 0 :(得分:1)

如果您的日期存储在GMT中,您可以通过附加时区告知strtotime()

echo date('Y-m-d H:i:s', strtotime("$date_from_db GMT"));

当然,将Europe/London设置为时区,结果可能相同。

或者,在您的情况下:

echo date('Y-m-d H:i:s', strtotime("$date_from_db +0100"));
// 2014-02-02 11:34:05

答案 1 :(得分:0)

尝试使用DateTime类 - 请参阅此页面上的示例http://www.php.net/manual/en/datetime.settimezone.php

<?php
$date = new DateTime('2000-01-01', new DateTimeZone('Pacific/Nauru'));
echo $date->format('Y-m-d H:i:sP') . "\n";

$date->setTimezone(new DateTimeZone('Pacific/Chatham'));
echo $date->format('Y-m-d H:i:sP') . "\n";
?>