获取客户端和服务器之间的时区差异

Ste*_*ven 12 .net javascript c# asp.net

如果我的用户在加利福尼亚,并且他们的计算机设置为PST,则那是下午1:00.如果我的服务器设置为EST,则当前服务器时间是下午4:00.

我需要一种方法来获得客户端和服务器之间的时区差异,无论是在Javascript还是C#中.在我的例子中,我会得到3(或-3,无所谓).

有谁知道如何做到这一点?

编辑:RedFilter的可能解决方案

在javascript中完成所有操作:

serverDate = new Date('<%= DateTime.Now.ToString() %>');
clientDate = new Date();
diffMin = (serverDate.getTime()-clientDate.getTime())*1000*60;  //get difference in minutes
Run Code Online (Sandbox Code Playgroud)

认为这会奏效吗?或者两者都会同时返回?

Red*_*ter 13

你可以:

1 - 将服务器日期作为Javascript日期变量返回给客户端.
2 - 创建一个新的javascript日期客户端(var currentTime = new Date();)并减去上述日期
3 - 将结果发回服务器(如果需要,您可能只需要知道客户端的区别).

更新

这是一个例子:

serverDate = new Date('<%= DateTime.Now.ToString() %>'); 
clientDate = new Date(); 
diffMin = (serverDate.getTime()-clientDate.getTime())/(1000*60);
alert("serverDate: " + serverDate + "\r\n" + "clientDate: " + clientDate + "\r\n" +
  "diffMin: " + diffMin);
Run Code Online (Sandbox Code Playgroud)

如果服务器和客户端在同一台计算机上,您将看到diffMin接近零.由于生成日期的服务器端脚本与浏览器解析和执行javascript之间的时间,日期之间存在细微差别.

//这对我很有用 - DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss")