我有一个网站,使用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));
输出与以前相同。
答案 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";
?>