2012-06-30 32 views
1
DateTime dt = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1); 
string day = dt.DayOfWeek.ToString(); 
day = day.Substring(0, 1).ToUpper(); 
MessageBox.Show(day); // result is "F" 

我怎樣才能得到結果在本地語言(CultureInfo),例如 - 法國,我在哪裏可以找到一個語言參考列表爲此目的?從MSDN如何在本地CultureInfo中獲得DayOfWeek?

回答

3

直:MSDN on DateTime with CultureInfo

DateTime dt = DateTime.Now; 
// Sets the CurrentCulture property to U.S. English. 
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); 
// Displays dt, formatted using the ShortDatePattern 
// and the CurrentThread.CurrentCulture. 
Console.WriteLine(dt.ToString("d")); 
+0

三江源,母馬,代碼工作,但在鏈接上沒有針對每種語言的cultureinfo截圖列表。 – Alegro

+3

我不會改變目前的文化,只是爲了在特定的文化中形成某種東西。我會在ToString調用中明確指定它。 –

+0

@Alegro:你可以在這裏找到一個列表:http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo%28v=vs.71%29.aspx –

6

假設你已經得到了CultureInfo,你可以使用:

string dayName = dateTime.ToString("dddd", culture); 

你會那麼需要採取它的第一個字符自己 - 有隻是沒有自定義日期/時間格式。您可以使用ddd作爲縮寫爲日的名稱,但這通常是三個字符,而不是一個。

至於文化列表 - 您可以使用CultureInfo.GetCultures。它會因平臺而異,並且可能會隨着時間的推移而變化,甚至是.NET的版本。

順便說一句,這個代碼並不理想:

DateTime dt = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1); 

如果你碰巧只是在今年年底午夜之前調用它,你可以得到「老字號」的一年,但隨後1月爲月份。您應該評估DateTime.Now(或DateTime.Today)一次,然後使用相同的值的兩倍:

DateTime today = DateTime.Today; 
DateTime startOfMonth = new DateTime(today.Year, today.Month, 1); 
+0

謝謝,Joh,這對我很有用。 – Alegro

1
DateTime dateValue = new DateTime(2008, 6, 11);  
Console.WriteLine(dateValue.ToString("ddd",  
        new CultureInfo("fr-FR"))); 
0

它是如此簡單:

var culture = new CultureInfo("da-DK"); 
var datestring =datetime.ToString("dd MMMMM yyyy kl. hh:mm",culture)