2011-05-10 110 views
1

我正在创建一个asp.net 2.0网站。它显示所有已注册日期的注册候选人。我将数据库中的所有日期存储为UniversalDate,现在要根据客户端文化和时区显示日期。如何显示客户端时区和时区缩写?

我能够使用JavaScript获得时区偏移量,但是如何正确显示时区缩写,因为有一些偏移量是相同的。

所以请让我知道我该怎么做?

回答

0

我不知道如果我的理解是正确的:

你的问题是,你的时区从JavaScript函数使用getTimezoneOffset()的网页浏览器偏移,发送出去的服务器和显示时,你所面对的问题:使用哪个时区?

基本上,没有必要添加时区指示符,如果它是用户默认的。默认情况下,我的意思是本地。在这种情况下,你只需要关心正确的偏移量。当然,这可能是历史数据的问题:如果有多个时区共享(当前)相同的偏移量,但会抵消不同日期的更改,则可能会为少量记录打印不正确的日期和时间。

如何避免它?唯一的方法是将时区信息添加到用户的配置文件,并让用户能够从列表中选择她的时区。您可以轻松地获得从TimeZoneInfo列表(这是你需要使用进行计算类;有的作品将被有意复制/历史原因):

// gives you the list of time zones 
var timeZones = TimeZoneInfo.GetSystemTimeZones(); 
foreach(var timeZone in timeZones) 
{ 
    // gives you the UTC offset and list of cities this entry regards to 
    // this is the best what you can display to user 
    string name = timeZone.DisplayName; 
    // ... 
} 

如果要使用此方法,您可能需要添加“根据...时区显示所有日期和时间”的信息,并在此处更改您的时区。而已。
我唯一的问题,DisplayName属性假设给我本地化的名称,但它始终显示我在当前的服务器文化中的名称:/