我正在創建一個asp.net 2.0網站。它顯示所有已註冊日期的註冊候選人。我將數據庫中的所有日期存儲爲UniversalDate,現在要根據客戶端文化和時區顯示日期。如何顯示客戶端時區和時區縮寫?
我能夠使用JavaScript獲得時區偏移量,但是如何正確顯示時區縮寫,因爲有一些偏移量是相同的。
所以請讓我知道我該怎麼做?
我正在創建一個asp.net 2.0網站。它顯示所有已註冊日期的註冊候選人。我將數據庫中的所有日期存儲爲UniversalDate,現在要根據客戶端文化和時區顯示日期。如何顯示客戶端時區和時區縮寫?
我能夠使用JavaScript獲得時區偏移量,但是如何正確顯示時區縮寫,因爲有一些偏移量是相同的。
所以請讓我知道我該怎麼做?
我不知道如果我的理解是正確的:
你的問題是,你的時區從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屬性假設給我本地化的名稱,但它始終顯示我在當前的服務器文化中的名稱:/