Php 我正在尝试使用GMT值获取时区名称

Php 我正在尝试使用GMT值获取时区名称,php,datetime,timezone,timestamp,unix-timestamp,Php,Datetime,Timezone,Timestamp,Unix Timestamp,我在数据库表中创建了unix时间戳。我知道用户的时区它也保存在一个表中,int格式为GMT+04:00,GMT+05:30 我试图做的是根据用户的时区,获取时间戳并向用户显示可读的时间 前 问题是date\u default\u timezone\u set不接受此中的时区 date_default_timezone_set('GMT+05:30'); 所以我需要一种方法将GMT+05:30转换成类似于America/Fortaleza的格式 有人能帮我吗?你所要求的是不可能的。时区和时区偏移

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

我试图做的是根据用户的时区,获取时间戳并向用户显示可读的时间

问题是date\u default\u timezone\u set不接受此中的时区

date_default_timezone_set('GMT+05:30');
所以我需要一种方法将GMT+05:30转换成类似于America/Fortaleza的格式


有人能帮我吗?

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

以美国/圣保罗这样的单一时区为例。它在标准时间使用-03:00的偏移量,在夏令时使用-02:00的偏移量

现在,你提到的美国/福塔莱萨全年使用-03:00。

正如你们所看到的,对于一个给定的时区,我可能有不止一个偏移量,对于一个给定的偏移量,我可能有不止一个时区。如果你想为自己找到更多的例子,你可以


这在其他答案以及时区中都有详细介绍!=偏移部分。

如果需要将用户的时区显示为名称,最好将其保存为类似于America/Fortaleza的格式。正如您所知,时区名称与其偏移量之间并不总是1:1的关系。例如,您的America/Fortaleza具有相同的偏移UTC−03:00作为美国/科尔多瓦或南极洲/罗瑟拉和更多。@smuf是的,数据库已经创建,数据由其他开发人员保存。我必须使用它。我想如果我们能得到至少一个匹配的时区就足够了,因为我不需要确切的时区,只需要显示正确的时间。非常感谢你的解释。
10:05am
07:05am
date_default_timezone_set('GMT+05:30');