2008-10-23 12 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"); 


    }