我正在创建一个asp.net 2.0网站。它显示注册日期的所有注册候选人。我将所有日期存储在数据库中作为UniversalDate,现在想要根据客户端文化和时区显示日期。
我能够使用javascript获得时区偏移,但如何正确显示时区缩写,因为有一些偏置是相同的。
所以,请让我知道我该怎么做?
答案 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属性假设给我本地化的名称,但它总是显示当前服务器文化中的名称:/