ToLongDateString()の日付と月の最初の文字を大文字にしてes-mx Cultureを作成する方法は?
-
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年10月22日
iは次のものを入手したい
Mi&#233; rcoles、22 de Octubre de 2008
自分の文化を構築する必要がありますか
解決
独自の文化を構築する必要はありません。現在のカルチャでプロパティDateTimeFormat.DayNamesおよびDateTimeFormat.MonthNamesを変更するだけです。
i.e。
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」を置き換えます。 &quot; de&quot;で。
最初の2つのソリューションは正常に機能しますが、これを任意のカルチャに拡張したいので、このアプローチを思いついた場合、現在のカルチャの日付時刻配列を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