如何将ToLongDateString()的日期和月份的第一个字母大写,导致es mx Culture
本文关键字:Culture mx es 导致 第一个 ToLongDateString 日期 | 更新日期: 2023-09-27 17:48:52
当前我在es MX Culture 中从以下C#代码行获得以下结果
Thread.CurrentThread.CurrentCulture =
Thread.CurrentThread.CurrentUICulture = new
CultureInfo("es-mx");
<span><%=DateTime.Now.ToLongDateString()%></span>
2008年10月22日
我想要下列
Miércoles,2008年10月22日
我需要建立自己的文化吗?
您不需要构建自己的文化。您只需要更改当前区域性中的属性DateTimeFormat.DayNames和DateTimeFormat.MonthNames。
即
string[] newNames = { "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado", "Domingo" };
Thread.CurrentThread.CurrentCulture.DateTimeFormat.DayNames = newNames;
然而,奇怪的是,en-US以第一个大写字母显示月份和日期,而mx ES则不显示。
希望有帮助!。
有点晚了,但这对我来说很管用!
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");
}
西班牙语(墨西哥)的LongDate模式是
dddd, dd' de 'MMMM' de 'yyyy
根据Thread.CurrentThread.CurrentCulture.DateTimeFormat.LongDatePattern。我想你只需要手动将日期和月份的首字母转换为大写,或者你可以使用Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase,然后用"De"替换"De"。
不变区域性的自定义长日期格式字符串是"dddd、dd-MMMM-yyyy";,因此您可以使用string.Format
和一种处理大写字母的方法:
private string GetDateFormated(DateTime date)
{
return string.Format("{0}, {1} {2} {3}",
ToTitleCase(date.ToString("dddd")),
date.ToString("dd"),
ToTitleCase(date.ToString("MMMM")),
date.ToString("yyyy"));
}
private string ToTitleCase(string input)
{
return input[0].ToString().ToUpper() + input.Substring(1);
}
参考:长日期("D")格式说明符
前两个解决方案运行良好,但如果我们想将其扩展到任何文化,那么我想出了这个方法,我将当前文化日期时间数组更改为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;
}
使用out the Loop如何改进?