如何大写日期和月份ToLongDateString()的第一个字母导致es-mx文化?
-
04-07-2019 - |
题
目前我在es-MX Culture
中使用以下C#代码行获得以下结果 Thread.CurrentThread.CurrentCulture =
Thread.CurrentThread.CurrentUICulture = new
CultureInfo("es-mx");
<span><%=DateTime.Now.ToLongDateString()%></span>
mi&#233; rcoles,22 de octubre de 2008
我想获得以下
Mi&#233; 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显示数月和数天。
希望它有所帮助!
其他提示
西班牙语(墨西哥)的LongDate模式是
dddd,dd'de'MMMM'de'yyyy
根据 Thread.CurrentThread.CurrentCulture.DateTimeFormat .LongDatePattern 。我想你只需要手动将日期和月份的首字母转换为大写字母,或者你可以使用 Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase 然后将”De“替换为”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");
}
不隶属于 StackOverflow