【发布时间】:2011-04-06 23:49:53
【问题描述】:
如果我的用户在加利福尼亚,并且他们的计算机设置为 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
认为这会奏效吗?还是两者会同时返回?
【问题讨论】:
-
如果服务器设置为 EST,则有问题。它应该以 UTC 运行。这将消除许多与时区相关的麻烦。
-
@Frederik 我看不出这会如何真正改变事情。如果应用程序需要知道客户端的时间偏移量,则无论服务器时区设置如何,它都需要知道。
-
我的服务器实际上是在 UTC 中运行的,我只是以 EST 为例来避免所有“有将日期转换为 UTC 的函数”的答案,这对我遇到的问题没有帮助有。
-
我主张将数据(在数据结构或数据库中)存储为 UTC 时间,但将整个服务器设置为 UTC 有点多。
-
另外,请记住 1) 有半小时 UTC 偏移量的时区 2) 两个时区之间的时差全年变化。
标签: c# .net javascript asp.net