主要站点如何检测时区?

2022-08-30 23:17:43

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

他们是怎么做到的?我有一个相当大的网站,有人发布需要显示正确时间的文章(根据时区,下午3点或6点上传)。

预加载器?Javascript?加载页面并重新加载?我的网站目前有这个人进入网站,在第一次进入时,它会通过javascript重新加载页面,其中包含他们时区的更新信息。然而,这是一件非常烦人的事情,我正在寻找另一种选择。我知道加载后,我可以发送一个ajax请求,然后让它用正确的时区更新整个站点中的所有内容,但是如果我必须单击后退,或者重新加载,它会询问我是否要再次发送信息,这也是不好的。那么他们是怎么做到的呢?

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

我是php,基于zend框架的。


答案 1

没有“时区”请求标头或类似的东西,所以,你不能用php

但是使用javascript,您可以获得客户端的时区偏移量,然后您可以发出xmlhttp请求以将信息发送到php

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

非常简单!

希望这有帮助


答案 2

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

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

然后只用于 .explode$file

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