日期:2014-05-18  浏览次数:20422 次

asp.net如何得到客户端时区
要实现这样一个功能。在每个页面加载的时候,获取当前的客户端时区,然后写入数据库

        protected   void   Page_Load(object   sender,   EventArgs   e)
        {
                string   timeZone   =   ...;
                //写入数据库
        }

1.   .net有一个TimeZone类,但好像得到的是服务器的时区。

2.   javascript倒是很容易得到,
var   zone   =   new   Date().getTimezoneOffset()/60*-1;但我这里页面一加载就要写数据库。我如何得到这个前台值?

有谁有解决办法吗?


------解决方案--------------------
1,datetime.now.tostring();
2,通过一个hidden 设为runat=server
var zone = new Date().getTimezoneOffset()/60*-1
zone赋值完毕后 把zone的值赋给hidden,后台可以直接取值
------解决方案--------------------
1. DateTime.Now.ToString() 得到的是 "2007-7-17 16:10:55 ",没有半点时区的信息

=========

// js
new Date().getTimeZoneOffset() // 返回本地时间和 GMT 或者UTC 之间相差的分钟数,可以间接计算时区了


2. 我尝试过,在前台的window.onload事件里给隐藏控件赋值,然后我在后台确实可以取到这个值,但我在Page_Load里就要写数据库了。这样我在Page_Load事件里写string zone = this.hidZone.value得到的是空值

======

酱紫肯定不行了,可以考虑通过一个页面刷新跳转

// bridge.html

window.onload = function { location.href = "target.aspx?clientdt= " + new Date().getTimeZoneOffset(); }



------解决方案--------------------
可以获取用户ip地址然后通过webserver获取用户所在地然后查找出时区