Php 转换日期时区的GMT值?

Php 转换日期时区的GMT值?,php,datetime,timezone,Php,Datetime,Timezone,我目前正在使用它将时间戳转换为用户定义的时区。我的问题是DateTimeZone()需要像欧洲/维也纳或美国/芝加哥这样的时区: $date = new DateTime("@".$timestamp); $date->setTimezone(new DateTimeZone("America/Chicago")); 我已经在上查看了受支持的时区,但它们太多了,我不希望用户浏览整个列表 是否有一种简单的方法将例如GMT+1:00、GMT-4:30或GMT+5:45转换为DateTimeZ

我目前正在使用它将时间戳转换为用户定义的时区。我的问题是DateTimeZone()需要像
欧洲/维也纳
美国/芝加哥
这样的时区:

$date = new DateTime("@".$timestamp);
$date->setTimezone(new DateTimeZone("America/Chicago"));
我已经在上查看了受支持的时区,但它们太多了,我不希望用户浏览整个列表

是否有一种简单的方法将例如
GMT+1:00
GMT-4:30
GMT+5:45
转换为DateTimeZone()的正确值

还是使用我在这里找到的数组列表更好:

通常使用UTC或GMT让用户选择更好吗


谢谢

我认为没有其他方法可以通过时区。我认为PHP中使用的时区必须基于位置来确定DST设置以及偏移量


但是,您仍然可以将选项显示为
GMT+1:00
等。您还可以将列表缩小到常用选项(UTC、GMT、PST等)。

您可能应该获得用户的实时时区(从完整列表中选择)。仅使用UTC的静态偏移,您将无法遵循用户位置的正确夏令时规则

PHP的
DateTimeZone
似乎无法接受,因此您似乎被预定义的时区束缚住了

查看
/usr/share/zoneinfo/Etc
。这里有一组预定义的时区,用于UTC加减整数。唯一的问题是+和-的意义与正常惯例相反。因此,只需使用“Etc/GMT-9”作为偏移量为+0900的通用时区


这并不能处理所有可能的时区,比如尼泊尔的怪异+0545,但它似乎是易于访问的最佳选项。

GMT偏移量值不明确。给定的偏移量通常映射到多个时区。当超过其夏令时,给定的偏移可能不适合使用。