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

PHP-更改整个站点的时区显示,php,datetime,Php,Datetime,我有一个网站,它使用date()函数显示数据库中的日期。现在我必须添加对各种时区的支持。时间需要更改,仅用于前端的显示目的。我使用了date\u default\u timezone\u set('Europe/London'),但它不影响日期输出-它与数据库中的日期保持一致。函数date\u default\u timezone\u get()显示时区设置成功,但日期输出保持不变。如何更改日期的全局输出?是否可以在不编辑站点中的所有date()函数的情况下完成此操作 完整示例: date_de

我有一个网站,它使用
date()
函数显示数据库中的日期。现在我必须添加对各种时区的支持。时间需要更改,仅用于前端的显示目的。我使用了
date\u default\u timezone\u set('Europe/London')
,但它不影响日期输出-它与数据库中的日期保持一致。函数
date\u default\u timezone\u 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));

输出与以前相同。

如果您的日期存储在GMT中,您可以通过附加时区让
strotime()
知道:

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

尝试使用DateTime类-参见本页的示例



哪个时区用于存储日期?因此您不能使用
DateTime
DateTimeZone
?服务器默认时区-GMT+1(如果我没记错的话)。如果在设置默认时区之前调用
strotime()
会怎么样?通过在设置日期之前设置它,您不是在告诉它输入在该时区吗?
<?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";
?>