使用PHP获取特定时刻的时区

时间:2017-10-30 02:30:08

标签: php datetime timezone

我想知道是否有办法使用PHP生成特定时刻所有当前时区的列表?

例如。所有全球位置,当前时间为 09:00

PHP会自动考虑夏令时吗?

我在这里或其他网站遇到的任何事情都是倒计时或每个时区显示。我只希望代码在设定的时间吐出那些代码而忽略其他代码,直到它说到时间为止。

1 个答案:

答案 0 :(得分:1)

你可以试试这样的事情

  1. 创建代表当前时刻的DateTime实例
  2. 迭代PHP知道的所有时区
  3. 过滤当前格式化时间符合条件的时区列表
  4. 这样的假设您希望当前小时的所有区域都是上午9点(所以在09:00到09:59之间的任何时间)

    $now = new DateTime();
    $searchHour = 9;
    $zones = array_filter(DateTimeZone::listIdentifiers(), function($tz) use ($now, $searchHour) {
        return $now->setTimezone(new DateTimeZone($tz))->format('G') == $searchHour;
    });
    

    演示〜https://eval.in/889126

    如果您想获取没有国家/地区前缀的区域标识符列表,请尝试这样的事情......

    $shortZones = array_map(function($tz) {
        // Turn "_" to " " and return the last part after "/"
        return str_replace('_', ' ', substr(strstr($tz, '/'), 1));
    }, $zones);