当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何在PHP中通过IP地址获取时区》经验,为你挑选了5个好方法。

我想通过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');

有时它不能在本地服务器上工作,所以尝试在服务器上.



2> John Saunder..:

甚至不能依靠IP地址映射到一个国家; 如果你还想获得时区,你就会在薄冰上行走.你最好让客户端发送时区,也许是在标题中.

请参阅Tor:匿名在线,这是另一个停止使用IP地址的原因.


通常,您可能会向用户提供"最佳猜测"自动填写的表单字段,在这种情况下,这绝对没有任何问题.
使用ip来估计时区没什么错.
我同意.如果有信息可以帮助您的用户体验朝着正确的方向发展,而不会损害用户的互动,请使用它!

3> vartec..:

如果您在本地计算机上运行它,则可以检查配置的时区.
http://www.php.net/manual/en/function.date-default-timezone-get.php

有很多更好,更可靠的方法,然后尝试使用GeoIP猜测时区.如果您感到幸运,请尝试:http://www.php.net/manual/en/book.geoip.php

$region = geoip_region_by_name('www.example.com');
$tz = geoip_time_zone_by_country_and_region($region['country_code'],
                                            $region['region']);  



4> cgp..:

获取客户端的时区并不是绝对肯定的,但是如果您让客户端从他们的机器上提交日期和时间,您可以根据它与GMT相关的时间来计算它.所以,如果它是在他们的机器上下午7点而且是格林尼治标准时间上午12:00,那么你可以确定它们是GMT或-5(EST/DST)


时区很难,因为大多数国际化问题都是如此.如果您知道他们当前的时间以及他们是否在夏令时,那么您可以确定他们的时区.然而,弄清楚白昼的说法非常困难(再次)
理论上这是一个好主意,直​​到你考虑到DST.这让我想哭.

5> masud_moni..:

通过他或她的IP地址搜索用户的时区不是一个好主意,因为他可以在不同的时间从不同的地方访问他或她的帐户.因此无法通过IP地址找到他的时区.但我试图找到一个解决方案,我在这里给我的代码.任何有关编码技术的批评都将受到高度赞赏.

getLocation();
                $tz_lat   = $location['latitude'];
                $tz_long  = $location['longitude'];

                $theta    = $cur_long - $tz_long;
                $distance = (sin(deg2rad($cur_lat)) * sin(deg2rad($tz_lat)))
                    + (cos(deg2rad($cur_lat)) * cos(deg2rad($tz_lat)) * cos(deg2rad($theta)));
                $distance = acos($distance);
                $distance = abs(rad2deg($distance));
                // echo '
'.$timezone_id.' '.$distance; if (!$time_zone || $tz_distance > $distance) { $time_zone = $timezone_id; $tz_distance = $distance; } } } return $time_zone; } return 'unknown'; }

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有