Php 转换日期时区的GMT值?
我目前正在使用它将时间戳转换为用户定义的时区。我的问题是DateTimeZone()需要像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
欧洲/维也纳
或美国/芝加哥
这样的时区:
$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偏移量值不明确。给定的偏移量通常映射到多个时区。当超过其夏令时,给定的偏移可能不适合使用。