如何显示客户端时区&时区缩写?

时间:2011-05-10 12:48:59

标签: .net asp.net internationalization timezone culture

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

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

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

1 个答案:

答案 0 :(得分:0)

我不确定我是否理解正确:

您的问题是,您通过JavaScript函数getTimeZoneOffset()从Web浏览器获得时区偏移,将其发送到服务器并在显示时,您将遇到问题:要使用哪个时区?

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

如何避免它?唯一的方法是将时区信息添加到用户的个人资料中,并让用户能够从列表中选择她的时区。您可以轻松地从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属性假设给我本地化的名称,但它总是显示当前服务器文化中的名称:/