我试图使用GMT值来获取时区名称

时间:2018-04-22 10:39:47

标签: php datetime timezone timestamp unix-timestamp

我在数据库表中创建了unix时间戳。我知道用户的时区,它也保存在一个表格中,格式为" GMT + 04:00" ," GMT + 05:30"

我尝试做的是根据时区给用户显示时间戳并显示可读时间。

实施例

$startTime = '1524391500';

echo date('h:ia', $startTime) . '<br>';
date_default_timezone_set('America/Fortaleza');
echo date('h:ia', $startTime) . '<br>';

这将给我们结果

10:05am
07:05am

问题是date_default_timezone_set不接受此

中的时区
date_default_timezone_set('GMT+05:30');

所以我需要一种转换方式&#34; GMT + 05:30&#34;类似于&#34; America / Fortaleza&#34;

有人可以帮我这个吗?

1 个答案:

答案 0 :(得分:1)

你要求的是不可能的。时区和时区偏移是两个不同的事情。

考虑像America/Sao_Paulo这样的单个时区。它在标准时间内使用-03:00的偏移量,在夏令时期间使用-02:00的偏移量。

现在考虑一下你提到的America/Fortaleza在整年使用-03:00

如您所见,对于给定的时区,我可能有多个偏移量,对于给定的偏移量,我可能有多个时区。如果您想为自己找到更多示例,可以review the lists of time zones and their offsets

其他答案以及the timezone tag wiki的“时区!=偏移”部分都详细介绍了这一点。