2009-05-19 28 views
3

我有一個位於瑞士的Web服務器,它旨在爲美國地區和歐洲地區提供服務。當從美洲顯示日期時,日期間隔一段時間而不是斜線。覆蓋.net中的默認日期分隔符

在某些情況下,我想用戶使用期限,如果他們是歐洲人,其他人我想使用斜槓。如果我指定格式字符串以使用斜線,則它將根據計算機設置轉換爲一段時間。我需要做什麼來指定每個用戶的區域設置(用戶必須登錄,我確切知道他來自哪個區域)。

回答

5

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全球化框架。

2

使用格式字符串與DateTime.ToString(),像這樣:

DateTime.Now.ToString("MM/dd/yyyy"); 

在這種情況下,/字符是指「使用日期分隔符爲當前文化」。更好的是,您可以撥打DateTime.Now.ToShortDateString()來使用本地系統的短日期格式。

System.Globalization命名空間中,本地化有更多的幫助。

現在有個訣竅:你的'本地'系統是你的網絡服務器,這意味着它總是會使用瑞士格式。所以你也想通過一個IFormatProvider告訴系統使用什麼樣的文化。這將是這個樣子:

DateTime.Now.ToString(System.Globalization.CultureInfo.GetCultureInfo("en-US")); 
3

如果當前區域性使用句點作爲日期分隔符,那麼你可以使用

C#

date.ToString(@"dd\/MM\/yyyy"); 

VB

斜線顯示
date.ToString("dd\/MM\/yyyy") 
+0

這對每個人都知道。當程序員打算使用「\ /」功能時,通常使用「/」(主要是強制格式使用「/」而不是其他任何內容)。 – 2013-05-04 16:56:43

1

我已經沒有必要使用它,但有日期時間,你可以使用內置的文化信息:

DateTime dt = DateTime.Now; 
dt.ToString(System.Globalization.CultureInfo.GetCultureInfo("fr-CH")); 

this at MSDN。記錄你的用戶文化(「fr-CH」,「en-US」等),那麼你可以做的不僅僅是美國訴瑞士。

或者我相信你可以創建自己的文化信息來正確地設置日期格式,但我再也沒有這樣做過。