【发布时间】:2010-10-05 05:09:00
【问题描述】:
是否可以在 Web 服务器上确定用户发送请求时的本地时间和时区?
是否可以使用 javascript 将其捕获并将其发送回服务器?
我的公司想要跟踪有多少用户在办公时间以外使用我们的网站(不,我也不知道为什么!)。
谢谢。
【问题讨论】:
-
谢谢大家,我意识到这取决于用户是否正确设置了他们的时钟。
标签: javascript time
是否可以在 Web 服务器上确定用户发送请求时的本地时间和时区?
是否可以使用 javascript 将其捕获并将其发送回服务器?
我的公司想要跟踪有多少用户在办公时间以外使用我们的网站(不,我也不知道为什么!)。
谢谢。
【问题讨论】:
标签: javascript time
您应该考虑对现有网络服务器日志进行反向 DNS 解析。然后,您可以使用地理编码来猜测用户的时区(以及相对于您的 Web 服务器时间的本地时间)。
您无需编写新的 JavaScript 代码、编写自定义服务器端代码来记录用户时间,然后部署更新的网站。
这个 Perl 脚本可能是一个有用的例子:Perl Script that Does Bulk Reverse-DNS Lookups
【讨论】:
当然,您可以嵌入一个 JS 派生的客户端时间戳并将其发送回附加到其他请求中,但这完全不可靠,因为用户可以将其客户端时间设置为他们想要的任何时间,并且它需要第二个请求,这可能有点滥用,或者在技术上难以确保。很多实现都会通过对文本文件的 AJAX 请求进行触发后忽略,或向页面添加单个空白像素图像来实现这一点。
您可以尝试根据第一次请求和地理定位 IP 得出类似的指标 - 位置和 GMT 时间戳为您提供本地时间 - 但如果您还没有 IP/Geo 数据库,这可能会很昂贵 :)
【讨论】:
您可以使用 JavaScript 读取浏览器的本地时间:
var now = new Date();
然后您可以使用 XmlHttpRequest 或隐藏的表单字段将其发布到服务器...
【讨论】:
JavaScript 确实是要走的路。
幸运的是,网络上有lots of sample code you can use。 This page 看起来很全面。
应该注意的是,知道某人的当前偏移不与知道他们的时区一样,但对于您的目的来说可能就足够了:)
【讨论】:
您可以使用 JavaScript 将日期加载到隐藏字段中:
var newDate = new Date();
hiddenFieldName.value = newDate.toLocaleString();
然后在回发到服务器时抓取该字段。
【讨论】:
您需要将客户端的 JavaScript 时间放入隐藏字段,并假设他们的时钟设置正确。
myTime = new Date() >> Tue Feb 03 2009 12:24:28 GMT-0500 (Eastern Standard Time)
【讨论】: