时区转换(以 php 为单位)

2022-08-30 09:23:18

任何人都可以建议一种简单的方法,在php中将日期和时间转换为不同的时区吗?


答案 1

您可以使用 datetime 对象或其函数别名来实现此目的:

示例(摘自 PHP 手册

date_default_timezone_set('Europe/London');

$datetime = new DateTime('2008-08-03 12:35:23');
echo $datetime->format('Y-m-d H:i:s') . "\n";
$la_time = new DateTimeZone('America/Los_Angeles');
$datetime->setTimezone($la_time);
echo $datetime->format('Y-m-d H:i:s');

编辑有关评论的内容

但我不能使用这种方法,因为我需要在不同的时区显示日期,因为用户从不同的位置登录

这不是问题。当用户登录时,您可以确定他的时区并将其设置为 DateTime 对象,如图所示。我在我的一个项目中使用了类似的方法,它就像一个魅力。

在数据库中,我需要获取任何单个时区的日期,然后才能正确处理它

您可以将时间存储为时间戳或日期时间,并将其存储在一个时区中。查询 DateTime 字段时,可以将 DateTime 对象中的时间转换为此时区,或者(如果数据库支持)查询所选时区。


答案 2

一个更简单的方法如下所示:

date_default_timezone_set('Europe/London'); // your user's timezone
$my_datetime='2013-10-23 15:47:10';
echo date('Y-m-d H:i:s',strtotime("$my_datetime UTC"));

PHP 手册中所述,strtotime() 也接受一个时区,您只需要将其附加到您的日期时间即可。

我建议您将所有日期时间存储在UTC中,因为这样您就不会遇到夏令时问题。


推荐