2008-10-23 14 views

回答

7

你不需要建立自己的文化。您只需要在當前區域中更改屬性DateTimeFormat.DayNames和DateTimeFormat.MonthNames。

 string[] newNames = { "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado", "Domingo" }; 
     Thread.CurrentThread.CurrentCulture.DateTimeFormat.DayNames = newNames; 

然而,它的怪異的是EN-US秀月和日與第一大寫字母和MX-ES不是。

希望它有幫助!

+4

「很奇怪en-US用第一個大寫字母和mx-ES表示幾個月和幾天不是」 - 不是真的,每個都遵循語言的語法規則。在西班牙語中,日期和月份名稱使用小寫字母。 – Joe 2008-10-23 06:53:13

1

的longdate爲西班牙語(墨西哥)的圖案是

dddd, dd' de 'MMMM' de 'yyyy

根據Thread.CurrentThread.CurrentCulture.DateTimeFormat.LongDatePattern。我猜你只需手動將日期和月份的首字母轉換爲大寫,或者您可以使用Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase,然後將「De」替換爲「de」。

+0

當你的工作需要熟悉翻譯時,這不是一個好方法。 – 2008-10-23 04:54:51

+0

是的,我的壞。但是,你如何以文化無知的方式進行探索? – jfs 2008-10-23 05:50:33

0

前兩個解決方案工作正常,但如果我們想什麼,所以我用這個方法我改變當前區域性的日期時間排列成的首字母大寫上前將其擴展到任何文化

private void SetDateTimeFormatNames() 
     { 

      Thread.CurrentThread.CurrentCulture.DateTimeFormat.DayNames = ConvertoToTitleCase(Thread.CurrentThread.CurrentCulture.DateTimeFormat.DayNames); 
      Thread.CurrentThread.CurrentCulture.DateTimeFormat.MonthNames = ConvertoToTitleCase(Thread.CurrentThread.CurrentCulture.DateTimeFormat.MonthNames); 

     } 

private string[] ConvertoToTitleCase(string[] arrayToConvert) 
      { 
       for (int i = 0; i < arrayToConvert.Length; i++) 
       { 
        arrayToConvert[i] = Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(arrayToConvert[i]); 
       } 

       return arrayToConvert; 
      } 

這可怎麼提高與循環?

0

有點晚了,但這個工作對我來說!

public static string GetFecha() 
    { 
     System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("es-EC"); 
     System.Threading.Thread.CurrentThread.CurrentCulture = culture; 

     // maldita sea! 
     string strDate = culture.TextInfo.ToTitleCase(DateTime.Now.ToLongDateString()); 

     return strDate.Replace("De", "de"); 


    }