如何在注册表单中检测用户时区?

时间:2009-04-20 12:15:02

标签: timezone autofill

时区很难从众多选项中进行选择。我想让这个过程更简单。我在野外看到了一些可以做出最佳猜测的形式。我为一个解决方案着想,但运气不错。有人知道怎么做吗?

5 个答案:

答案 0 :(得分:10)

<强>使用Javascript:

var today = new Date();

alert( today.getTimezoneOffset() );

这将给出Offset(GMT-X),但不是实际的时区名称。请记住,相同的GMT偏移量可以与多个时区相对应,还必须考虑夏令时。但是,这可能是最简单的开始,而不是让用户从下拉菜单中选择他们的时区。

答案 1 :(得分:2)

您可以尝试通过将其IP地址与一系列列表进行匹配来检测用户所在国家/地区。有不同的方法可以实现这一目标,但最好的方法是使用this API

使用示例如下:http://nl.ae/iptocapi.php?type=1&ip=00.00.00.00。这将返回该IP地址的国家/地区代码。然后很容易将国家/地区代码与时区匹配。

以这种方式找到时区后,您可以将其用作下拉框中的默认值。

答案 2 :(得分:2)

我在这里找到了一个更好更强大的解决方案:http://www.onlineaspect.com/2007/06/08/auto-detect-a-time-zone-with-javascript/

正如作者所解释的,Date.getTimezoneOffset()不一致。

答案 3 :(得分:1)

您可以使用JavaScript或多或少地可靠地确定时区偏移量。据我所知,HTTP没有提供任何方法来确定服务器上的客户端时区。

答案 4 :(得分:1)

使用Javascript:

<input type="hidden" id="visitorTZ" name="visitorTZ" />
<script type="text/javascript">
    d = new Date();
    document.getElementById('visitorTZ').value = d.getTimezoneOffset()/60; 
</script>