在我的ASP.NET网站上,我有很多带有时间戳的页面。我想将服务器时间的时间戳转换为浏览器时间。为此,我需要在代码隐藏中获得客户端的时区偏移量。
我尝试的是使用JavaScript在每个页面的TimezoneOffset
中设置<head>
Cookie。但它(显然)在第一次加载页面时没有用(并且之前没有设置cookie)。
是否有任何优雅的解决方案可以将日期从服务器转换为客户端时间?
我看到的唯一解决方案是在TimezoneOffset
中检查Page_Load
cookie,然后重定向到将设置此cookie的虚拟页面,然后使用JS重定向回原始页面,但我不喜欢这个解决方案。
答案 0 :(得分:0)
我不认为您可以在访问页面之前访问任何用户的信息,但您可以在头脑中检查cookie并重新加载页面。这看起来像这样:
var time = getCookie("timezoneoffset");
if(time !== undefined) {
//congrats, the timezone is set!
} else {
//set the cookie here, then do this:
location.reload()
}
答案 1 :(得分:0)
您可以在设置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的人(但这是另一个故事)。