主要站点如何检测时区?

Dar*_*ius 16 javascript php timezone zend-framework

Facebook,myspace,MSN,craigslist; 所有检测时区并正确显示时间和日期,而无需提交表单或重新加载页面.

他们是如何做到的呢?我有一个非常大的网站,并有人发布需要显示正确时间的文章(根据时区上传下午3点或下午6点).

预加载?JavaScript的?加载页面并重新加载?我的网站目前有人进入该网站,并在第一次进入时通过javascript重新加载页面,其中包含其时区的更新信息.然而,这是一个非常讨厌的事情,我正在寻找另一种选择.我知道在加载时我可以发出一个ajax请求然后让它更新整个站点中的所有内容,并为用户提供正确的时区但是如果我必须单击返回,或者重新加载它询问我是否要再次发送信息这也很糟糕.那他们怎么做呢?

我正在玩Facebook,改变我在本地机器上的位置,它似乎每5分钟左右更新一次.

我是基于php,zend-framework的.

小智 16

没有"时区"请求标题,或类似的东西,所以,你不能用PHP

但使用javascript你可以得到客户端的时区偏移量,然后你可以发出一个xmlhttp请求发送信息到PHP

看到这个:http://www.pageloom.com/automatic-timezone-detection-with-javascript

满容易!

希望这可以帮助


Oll*_*lli 6

您可以使用 IP 地址地理编码找到用户国家/地区,然后使用每个国家/地区的时区数组。我认为没有其他方法。您可以像这样获取用户国家/地区:

<?php
$file = file_get_contents("http://api.hostip.info/get_html.php?ip=".$_SERVER['REMOTE_ADDR']."");
?>
Run Code Online (Sandbox Code Playgroud)

然后只explode用于$file.

另请查看这些 Stackoverflow 代码:
如何确定网络用户的时区?
任何可用于从 IP 地址确定用户所在城市和国家的可靠 API