我想知道是否有办法使用 PHP 生成特定时间的所有当前时区的列表?
例如,具有当前时间的所有全球位置 09:00
.
PHP 也会自动考虑夏令时吗?
我在这里或其他网站上遇到的任何东西要么是倒计时,要么是每个时区显示的。我只希望代码在设定的时间吐出这些代码,而忽略其他代码,直到它在那里说出来。
你可以尝试这样的事情
- 创建表示当前时刻的
DateTime
实例 - 遍历 PHP 知道的所有时区
- 筛选列表中哪些时区是当前格式化时间符合您的条件
假设您希望当前时间为上午 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);