如何大写日期和月份ToLongDateString()的第一个字母导致es-mx文化?

目前我在es-MX Culture中使用以下C#代码行获得以下结果

Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = new CultureInfo("es-mx");  

miércoles,22 de octubre de 2008

我想获得以下内容

Miércoles,22 de Octubre de 2008

我需要建立自己的文化吗?

您不需要建立自己的文化。 您只需要更改当前区域性中的DateTimeFormat.DayNames和DateTimeFormat.MonthNames属性。

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

然而,很奇怪en-US用第一个大写字母和mx-ES表示月份和日期。

希望能帮助到你!。

西class牙语(墨西哥)的LongDate模式是

dddd, dd' de 'MMMM' de 'yyyy

根据Thread.CurrentThread.CurrentCulture.DateTimeFormat.LongDatePattern 。 我想你只需要手动将日期和月份的首字母转换为大写字母,或者你可以使用Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase然后将“De”替换为“de”。

前两个解决方案工作正常,但如果我们想将其扩展到任何文化,那么我想出了这种方法我将当前的文化日期时间数组更改为TitleCase

 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; } 

如何通过循环改善这一点?

有点晚了,但这对我有用!

  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"); }