2011-05-10 67 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屬性假設給我本地化的名稱,但它始終顯示我在當前的服務器文化中的名稱:/