我有一個位於瑞士的Web服務器,它旨在爲美國地區和歐洲地區提供服務。當從美洲顯示日期時,日期間隔一段時間而不是斜線。覆蓋.net中的默認日期分隔符
在某些情況下,我想用戶使用期限,如果他們是歐洲人,其他人我想使用斜槓。如果我指定格式字符串以使用斜線,則它將根據計算機設置轉換爲一段時間。我需要做什麼來指定每個用戶的區域設置(用戶必須登錄,我確切知道他來自哪個區域)。
我有一個位於瑞士的Web服務器,它旨在爲美國地區和歐洲地區提供服務。當從美洲顯示日期時,日期間隔一段時間而不是斜線。覆蓋.net中的默認日期分隔符
在某些情況下,我想用戶使用期限,如果他們是歐洲人,其他人我想使用斜槓。如果我指定格式字符串以使用斜線,則它將根據計算機設置轉換爲一段時間。我需要做什麼來指定每個用戶的區域設置(用戶必須登錄,我確切知道他來自哪個區域)。
ASP.NET中的全球化應該爲你做所有事情。請參閱this MSDN article,標題爲如何爲ASP.NET網頁全球化設置文化和UI文化。這應該正是您想要的,因爲您只需在用戶登錄時爲當前線程設置當前(UI)文化。然後您可以調用date.ToString()
,它將以正確的格式返回文本表示。
同樣地,你可以做這樣的事情:
var culture = System.Globalization.CultureInfo.GetCultureInfo("en-GB");
var dateString = date.ToString(culture.DateTimeFormat);
但它實際上只是手工做同樣的事情,而且是遠不如優雅。您不妨在這裏使用ASP.NET全球化框架。
使用格式字符串與DateTime.ToString()
,像這樣:
DateTime.Now.ToString("MM/dd/yyyy");
在這種情況下,/字符是指「使用日期分隔符爲當前文化」。更好的是,您可以撥打DateTime.Now.ToShortDateString()
來使用本地系統的短日期格式。
在System.Globalization
命名空間中,本地化有更多的幫助。
現在有個訣竅:你的'本地'系統是你的網絡服務器,這意味着它總是會使用瑞士格式。所以你也想通過一個IFormatProvider
告訴系統使用什麼樣的文化。這將是這個樣子:
DateTime.Now.ToString(System.Globalization.CultureInfo.GetCultureInfo("en-US"));
如果當前區域性使用句點作爲日期分隔符,那麼你可以使用
C#
date.ToString(@"dd\/MM\/yyyy");
VB
斜線顯示date.ToString("dd\/MM\/yyyy")
我已經沒有必要使用它,但有日期時間,你可以使用內置的文化信息:
DateTime dt = DateTime.Now;
dt.ToString(System.Globalization.CultureInfo.GetCultureInfo("fr-CH"));
見this at MSDN。記錄你的用戶文化(「fr-CH」,「en-US」等),那麼你可以做的不僅僅是美國訴瑞士。
或者我相信你可以創建自己的文化信息來正確地設置日期格式,但我再也沒有這樣做過。
這對每個人都知道。當程序員打算使用「\ /」功能時,通常使用「/」(主要是強制格式使用「/」而不是其他任何內容)。 – 2013-05-04 16:56:43