我正在尝试使用 GMT 值获取时区名称
I'm trying to get timezone name using GMT value
我在数据库中创建了 unix 时间戳 table。我知道用户的时区,它也保存在 table 和 "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');
所以我需要一种方法将 "GMT+05:30" 转换为 "America/Fortaleza"
有人可以帮我解决这个问题吗?
你要求的是不可能的。时区和时区偏移量是两个不同的东西。
考虑像 America/Sao_Paulo
这样的单个时区。它在标准时间期间使用 -03:00
的偏移量,在夏令时期间使用 -02:00
的偏移量。
现在想想你提到的 America/Fortaleza
全年使用 -03:00
。
如您所见,对于给定的时区,我可能有多个偏移量,而对于给定的偏移量,我可能有多个时区。如果您想为自己找到更多示例,可以review the lists of time zones and their offsets。
其他答案以及 the timezone tag wiki 的 "Time Zone != Offset" 部分对此进行了广泛介绍。
我在数据库中创建了 unix 时间戳 table。我知道用户的时区,它也保存在 table 和 "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');
所以我需要一种方法将 "GMT+05:30" 转换为 "America/Fortaleza"
有人可以帮我解决这个问题吗?
你要求的是不可能的。时区和时区偏移量是两个不同的东西。
考虑像 America/Sao_Paulo
这样的单个时区。它在标准时间期间使用 -03:00
的偏移量,在夏令时期间使用 -02:00
的偏移量。
现在想想你提到的 America/Fortaleza
全年使用 -03:00
。
如您所见,对于给定的时区,我可能有多个偏移量,而对于给定的偏移量,我可能有多个时区。如果您想为自己找到更多示例,可以review the lists of time zones and their offsets。
其他答案以及 the timezone tag wiki 的 "Time Zone != Offset" 部分对此进行了广泛介绍。