如果网站的所有者想要尽可能地跟踪他们的用户,他们可以捕获什么(以及如何).您可能想知道这一点,以便捕获您创建的站点上的信息,或者作为用户,以防止站点捕获您的数据.
这是一个起始列表,但我确定我错过了一些重要的内容:
这些是我想到的常见问题,但必须有很多不寻常的问题.例如,这个:
...在这里阅读之前我从未听说过的.
稍后添加(阅读本文后):
请尝试每个答案只放一个项目,然后我们可以使用投票来整理更好/更有趣的.以下列表可能效果不佳.
好吧......下一次我问这样的问题我会更好地设置它.
以下是我得到的一些最佳答案:
Facebook,myspace,MSN,craigslist; 所有检测时区并正确显示时间和日期,而无需提交表单或重新加载页面.
他们是如何做到的呢?我有一个非常大的网站,并有人发布需要显示正确时间的文章(根据时区上传下午3点或下午6点).
预加载?JavaScript的?加载页面并重新加载?我的网站目前有人进入该网站,并在第一次进入时通过javascript重新加载页面,其中包含其时区的更新信息.然而,这是一个非常讨厌的事情,我正在寻找另一种选择.我知道在加载时我可以发出一个ajax请求然后让它更新整个站点中的所有内容,并为用户提供正确的时区但是如果我必须单击返回,或者重新加载它询问我是否要再次发送信息这也很糟糕.那他们怎么做呢?
我正在玩Facebook,改变我在本地机器上的位置,它似乎每5分钟左右更新一次.
我是基于php,zend-framework的.
我想知道是否有办法从客户端自动检索用户的时区.特别是在登录时.
我试图在登录页面中添加它(使用auth.login):
{% get_current_timezone as TIME_ZONE %}
Run Code Online (Sandbox Code Playgroud)
然后在登录表单中添加它
<input type="hidden" name="next" value="/redirect/?tz={{ TIME_ZONE }}">
Run Code Online (Sandbox Code Playgroud)
但tz始终是服务器的时区.
我经常需要根据用户的实际本地时间或受时区影响而显示信息.获取用户当前时间和/或时区是否有可靠的方法?
关键问题:
关键问题:
例子:
倒数:
只需1小时3分56秒!
问题:基于什么去的几秒钟; 用户的OS时钟,主机服务器时间(正负偏移),ISP系统时间.如果所有时区的时钟同时结束,这很容易,但如果它是用户本地时区的午夜倒计时,则会更加棘手)
编辑日志
项目发布于3:03 pm(10秒前)
问题:无论用户如何计算"10秒",调整时间以匹配用户的时区.
营业时间:
这家餐厅现在营业至午夜(AEST).
问题:给出午夜等时间可以通过从服务器端偏移来计算,但是使用psudo时间(例如现在),在2小时内取决于用户的时间.
PHP:使用time()输出服务器时间.这可以根据用户的时区进行偏移.
JavaScript:使用Date()输出用户的计算机时钟时间太容易操作.
我想知道javascript中是否有内置函数,具有时区信息,如
America/Los_Angeles(或等价物)可以根据需要考虑的因素来确定吗?
类似于http://momentjs.com/timezone/在它的主页上做了吗?或者是否有这些区域的列表,我可以尝试建立自己的库?从我收集的内容http://momentjs.com/timezone/以vaule America/Los_Angeles为例来确定偏移量,但我找不到如何做相反的事情.
我如何操纵日期,以便它们显示为"刚刚"..."5分钟前"..."3小时前"..."2010年6月22日下午1:45"以类似的方式如何SO显示每个问题的答案/评论旁边的日期?
更复杂的是,我的数据库中存储的日期是GMT时间(很好),但我希望它们出现在每个用户浏览器的时区中.
我已经尝试了John Resig的漂亮日期插件:http://bassistance.de/jquery-plugins/jquery-plugin-prettydate/,我编辑了它,以便从数据库中的GMT时间中减去时区偏移量.但是,此解决方案仅适用于FireFox.
在添加时区偏移后,这是'prettydate'函数:
format : function(time) {
var date = new Date(time);
var currentDate = new Date();
var timezoneOffsetInMilliseconds = currentDate.getTimezoneOffset() * 60000;
var currentTimeInMillisecondsUtc = currentDate.getTime();
var givenTimeInMillisecondsUtc = date.getTime()- timezoneOffsetInMilliseconds;
var diffInSeconds = ((currentTimeInMillisecondsUtc - givenTimeInMillisecondsUtc) / 1000);
var day_diff = Math.floor(diffInSeconds / 86400);
if (isNaN(day_diff) || day_diff < 0)
return;
// If longer than a month, calculate the date w/ timezone offset
if (day_diff >= 31)
return new Date(givenTimeInMillisecondsUtc).toLocaleString();
var messages …Run Code Online (Sandbox Code Playgroud) 我们在中西部(东部标准时间)启动并运行服务器的ASP.Net 2.0 Web应用程序.此时,我们所有的客户都与服务器位于同一时区.我们将在亚利桑那州(Mountain Standard Time)在线提供另一台服务器.
我们通过C#codebehind DateTime.UtcNow将所有时间存储在SQL 2005数据库中.
在测试期间,我们遇到了一些时区转换问题.我们的问题是,在网络浏览器中,我们的时间显示的是山地标准时间而不是我们正在测试的时区,即东部标准时间.
当我们输入新信息时,它会以UTC的形式存储在数据库中,但是当我们在浏览器中查看该信息时,它会显示Mountain Standard Time.下面是从数据库中获取UTC值并在浏览器中显示的代码.
lblUpdatedDate.Text = Convert.ToDateTime(dr["UpdatedDate"]).ToLocalTime().ToString();
Run Code Online (Sandbox Code Playgroud)
上面的代码返回服务器所在的Mountain Standard Time,而不是运行浏览器的Eastern Standard Time.我们如何有时间显示用户所在的位置?
问题是听起来 - 如何根据浏览器输入检索客户端用户的时区?如果重要的话,使用服务器端J2EE,但我不认为在这种情况下真的很重要.现在,HTTP是协议,它可以在它上线时使用HTTPS.
假设我有一个可以用文化不变格式表示的日期(ISO 8601).
我将选择2009年7月6日,UTC时间下午3:54在巴黎,也就是当地时间下午5:54在巴黎观察夏令时.
2009-07-06T15:54:12.000 + 02:00
OK ...是否有任何隐藏的标记宝石会告诉浏览器将该字符串转换为它的本地化版本?
最接近的解决方案是使用Javascript的Date.prototype.toLocaleString().它确实做得很好,但迭代很多日期可能很慢,而且它依赖于Javascript.
是否有任何HTML,CSS,XSLT或其他语义标记,浏览器将识别并自动呈现正确的本地化字符串?
编辑:
我目前使用的方法是用本地化的字符串替换HTML元素的文本:
从...开始:
<span class="date">2009/07/06 15:54:12 GMT</span>
Run Code Online (Sandbox Code Playgroud)
使用Javascript(使用jQuery):
var dates = $("span.date", context);
// use for loop instead of .each() for speed
for(var i=0,len=dates.length; i < len; i++) {
// parse the date
var d = new Date(dates.eq(i).text());
// set the text to the localized string
dates.eq(i).text(d.toLocaleString());
}
Run Code Online (Sandbox Code Playgroud)
从实际的角度来看,当Javascript运行时,它会使文本"闪烁"到新值,我不喜欢它.
从原则的角度来看,我不明白为什么我们需要这样做 - 浏览器应该能够本地化标准的东西,如货币,日期,数字,只要我们这样标记它.
后续问题:为什么浏览器/ Web没有这么简单的功能 - 采用标准数据项,并根据客户端的设置进行格式化?
我想在我的网页上显示用户 Timezone的全名。例如:
Eastern Standard Time (North America)
Pacific Daylight Time (North America)
West Africa Time
Run Code Online (Sandbox Code Playgroud)
我怎样才能在 Javascript 中做到这一点?我见过呈现如下内容的解决方案:America/New_York. 但这并不是我真正要寻找的。