如何通过PHP中的IP地址获取时区

2022-08-30 12:39:01

我想通过 PHP 中的 IP 地址获取时区。实际上,我有一个将在客户端计算机上运行的应用程序。我有客户端计算机的 IP 地址。但是我无法获取每台客户端计算机的时区。


答案 1
$ip = "189.240.194.147";  //$_SERVER['REMOTE_ADDR']
$ipInfo = file_get_contents('http://ip-api.com/json/' . $ip);
$ipInfo = json_decode($ipInfo);
$timezone = $ipInfo->timezone;
date_default_timezone_set($timezone);
echo date_default_timezone_get();
echo date('Y/m/d H:i:s');

有时它在本地服务器上不起作用,因此请尝试在服务器上使用。

编辑:这些数据来自 ip-api.com,只要您每分钟不超过45个请求并且不用于商业用途,就可以免费使用。看看他们的TOS,不是很长的一页。


答案 2

IP地址甚至不能被依赖映射到一个国家;如果你也想得到时区,你正在如履薄冰。您最好让客户端向您发送时区,也许在标头中。

请参阅Tor:匿名在线,这是另一个原因,停止将IP地址用于它们不是为之设计的东西。


推荐