C# 如何在es mx区域性中使用ToLongDateString()的大写日期和月份首字母?
目前,我在es MX区域性中从以下C#行代码中获得以下结果C# 如何在es mx区域性中使用ToLongDateString()的大写日期和月份首字母?,c#,.net,datetime,internationalization,culture,C#,.net,Datetime,Internationalization,Culture,目前,我在es MX区域性中从以下C#行代码中获得以下结果 Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = new CultureInfo("es-mx"); <span><%=DateTime.Now.ToLongDateString()%></span> Thread.CurrentThread
Thread.CurrentThread.CurrentCulture =
Thread.CurrentThread.CurrentUICulture = new
CultureInfo("es-mx");
<span><%=DateTime.Now.ToLongDateString()%></span>
Thread.CurrentThread.CurrentCulture=
Thread.CurrentThread.CurrentUICulture=新建
文化信息(“es mx”);
米尔科勒,2008年8月22日
我想获得以下信息
米尔科勒,2008年8月22日
我需要建立自己的文化吗?西班牙(墨西哥)的长日期模式是
dddd,dd'de'MMMM'de'yyyy
根据。我想你只需要手动将日期和月份的首字母转换为大写,或者你可以使用,然后用“De”替换“De”。你不需要建立自己的文化。您只需更改当前区域性中的属性DateTimeFormat.DayNames和DateTimeFormat.MonthNames i、 e
然而,很奇怪的是,en-US用第一个大写字母表示月份和天数,而mx-ES则没有
希望有帮助 前两个解决方案很好,但如果我们想将其扩展到任何文化,该怎么办?因此我提出了这种方法,将当前文化日期时间数组更改为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;
}
private void SetDateTimeFormatNames()
{
Thread.CurrentThread.CurrentCulture.DateTimeFormat.DayNames=ConvertToTitlecase(Thread.CurrentThread.CurrentCulture.DateTimeFormat.DayNames);
Thread.CurrentThread.CurrentCulture.DateTimeFormat.MonthNames=ConvertToTitlecase(Thread.CurrentThread.CurrentCulture.DateTimeFormat.MonthNames);
}
私有字符串[]ConvertToTitleCase(字符串[]arrayToConvert)
{
for(int i=0;i
如何在不进行循环的情况下改进此功能?有点晚了,但这对我来说很有效
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");
}
这不是一个很好的方法,因为它需要对翻译有深入的了解。但你会如何以文化无关的方式来处理呢?“很奇怪,en-US用第一个大写字母表示月份和天数,而对于mx-ES则不是”-不太可能,每个字母都遵循其语言的语法规则。在西班牙语中,日和月的名称使用小写。嘿,这是真的。我是墨西哥人,我不知道正确的方法是使用小写。在墨西哥,许多人使用书名大小写写,可能是因为受美国的影响。如果使用微软的翻译适合你,你可以使用
Thread.CurrentThread.CurrentCulture=new CultureInfo(“es”)代码>使用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");
}