代码之家  ›  专栏  ›  技术社区  ›  Yasitha

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

  •  0
  • Yasitha  · 技术社区  · 6 年前

    我在数据库表中创建了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\u default\u timezone\u set不接受此中的时区

    date_default_timezone_set('GMT+05:30');
    

    所以我需要一种方法将“GMT+05:30”转换为类似“America/Fortaleza”的内容

    有人能帮我吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Matt Johnson-Pint    6 年前

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

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

    现在考虑一下 America/Fortaleza 你提到了用途 -03:00 一整年。

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

    其他答案以及的“时区!=偏移量”部分对此进行了广泛介绍 the timezone tag wiki