ToLongDateString()の日付と月の最初の文字を大文字にしてes-mx Cultureを作成する方法は?

StackOverflow https://stackoverflow.com/questions/228559

質問

現在、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");


    }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top