4

例如,
我有一个来自美国的 IP 地址。
我正在使用这个功能:

$timeZone = DateTimeZone::listIdentifiers(DateTimeZone::PER_COUNTRY, "US");

获取位置。
我得到一个数组:

0 => string 'America/Adak'   
1 => string 'America/Anchorage'  
2 => string 'America/Boise'   

我如何从 IP 地址知道我需要的位置是什么?

谢谢,

4

1 回答 1

2

不幸的是,没有简单的方法可以通过 IP 地址确定时区,尤其是在您使用共享主机的情况下。

但是,如果你可以安装GeoIP 扩展,你可以让它像这样工作:

$region = geoip_region_by_name($_SERVER['REMOTE_ADDR']);
$timezone = geoip_time_zone_by_country_and_region($region['country_code'], $region['region']);

阅读更多关于:

  1. geoip_time_zone_by_country_and_region
  2. geoip_region_by_name
于 2012-07-30T07:43:01.303 回答