How are major sites detecting timezone?
Facebook,myspace,MSN,craigslist;所有检测时区并正确显示时间和日期,而无需提交表单或重新加载页面。
他们是如何做到的呢?我有一个非常大的网站,人们发布需要显示正确时间的文章(根据时区上传至下午3点或下午6点)。
预加载? JavaScript的?加载页面并重新加载?我的网站目前有人进入该网站,并在第一次进入时通过javascript重新加载页面,其中包含其时区的更新信息。然而,这是一个非常讨厌的事情,我正在寻找另一种选择。我知道在加载时我可以发出一个ajax请求然后让它更新整个站点的所有内容,并为用户提供正确的时区但是如果我必须单击返回,或者重新加载它询问我是否要再次发送信息这也很糟糕。那他们怎么做呢?
我正在玩Facebook,改变我在本地机器上的位置,它似乎每5分钟左右更新一次。
我是基于php,zend-framework的。
没有"时区"请求标题,或类似的东西,所以,你不能用PHP
但使用javascript你可以得到客户端的时区偏移量,然后你可以发出一个xmlhttp请求发送信息到PHP
看到这个:http://www.pageloom.com/automatic-timezone-detection-with-javascript
满容易!
希望这可以帮助
您可以使用IP地址地理编码找到用户所在国家/地区,然后为每个国家/地区设置一些带有时区的阵列。我认为没有别的办法。
您可以像这样获取用户所在国家/地区:
1 2 3 | <?php $file = file_get_contents("http://api.hostip.info/get_html.php?ip=".$_SERVER['REMOTE_ADDR'].""); ?> |
然后只需使用
另请参阅以下Stackoverflow代码:
如何确定网络用户的时区?
任何可靠的API可用于从IP地址确定用户的城市和国家/地区
我相信他们使用IP寻址和地理位置。这里的所有都是它的。
首先,您应该在所有级别使用UTC,如果您不知道时区,请标记时间。然后在本地客户端上,您可以使用timezoneOffset调整时间
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset
jsTimezoneDetect提供了一个很棒的库,可以通过javascript自动检测时区。
尝试这个PHP代码,这提供了更好的精度
1 2 3 4 | <?php $ip = $_SERVER['REMOTE_ADDR']; $json = file_get_contents("http://api.easyjquery.com/ips/?ip=".$ip."&full=true"); $json = json_decode($json,true); $timezone = $json[localTimeZone];?> |