在首次页面加载之前设置时区 Cookie
Set timezone cookie BEFORE first page load
在我的 ASP.NET 网站上,我有很多带有时间戳的页面。我想将时间戳从服务器时间即时转换为浏览器时间。为此,我需要在代码隐藏中获取客户端的时区偏移量。
我尝试的是使用 JavaScript 在每个页面的<head>
中设置TimezoneOffset
cookie。但是当第一次加载页面时,它(显然)不起作用(并且之前没有设置cookie)。
是否有任何优雅的解决方案可以将日期从服务器时间转换为客户端时间?
我看到的唯一解决方案是检查Page_Load
中的TimezoneOffset
cookie,然后重定向到将设置此cookie的虚拟页面,然后使用JS重定向回原始页面,但我不喜欢这个解决方案。
我认为您无法在用户进入页面之前访问任何用户的信息,但您可以在头脑中检查cookie并重新加载页面。这看起来像这样:
var time = getCookie("timezoneoffset");
if(time !== undefined) {
//congrats, the timezone is set!
} else {
//set the cookie here, then do this:
location.reload()
}
您可以通过在设置 cookie 后进行刷新来使用 Wyatt 的解决方案(当然,您必须忽略真正的第一个请求,因为它没有 cookie)
var time = getCookie("timezoneoffset");
if(time != undefined) {
//congrats, the timezone is set!
} else {
//set the cookie here, then do this ....
location.reload();
}
您是否考虑过进行此转换客户端?这可能是一个更好的解决方案(但在很大程度上取决于您的应用程序体系结构)。
同样通过这种方式,您将潜在客户限制为接受cookie的客户(但那是另一回事)。
相关文章:
- 分析特定区域设置(而不是时区!)中的日期字符串
- 更改默认时区后,如何在本地时间设置时刻格式
- 如何在时间标签和相同的类中以UTC格式重新格式化ISO 8601时间戳,并通过JavaScript根据用户区域设置和时区
- 如何使用momentjs将澳大利亚/墨尔本时区设置为倒计时计时器
- 使用JS检查用户是否在EST时区和设置的EST时间范围内
- 用javascript设置浏览器窗口的默认时区
- 在Protractor测试中设置浏览器时区
- 情节.js为类型设置时区:“日期”
- 在首次页面加载之前设置时区 Cookie
- 传递javascript变量以在PHP中设置时区
- 为时区设置 AngularJS 全局配置
- 如何根据Node.js中的post参数之一为所有请求设置时区
- 在Protractor e2e测试中设置时区
- 使用moment.js在javascript中显示json中的日期时间,而不格式化为区域设置时区
- 如何在js中为日期选择器而不是浏览器设置时区
- 使用Javascript检测区域设置/时区
- 如何动态设置时区为客户端时区
- 在任何时间日期选择器中以编程方式设置时区偏移量
- 为YUI日历插件设置时区
- 使用javascript从客户端在Rails上设置时区