7

現在、es-MXカルチャーでは、次のC#コード行から以下の結果が得られます。

   Thread.CurrentThread.CurrentCulture =
     Thread.CurrentThread.CurrentUICulture = new
                CultureInfo("es-mx");

  <span><%=DateTime.Now.ToLongDateString()%></span>

miércoles、2008年10月22日

以下を入手したい

Miércoles、2008年10月22日

自分の文化を構築する必要がありますか?

4

5 に答える 5

10

独自の文化を構築する必要はありません。現在のカルチャで DateTimeFormat.DayNames プロパティと DateTimeFormat.MonthNames プロパティを変更するだけで済みます。

すなわち

        string[] newNames = { "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado", "Domingo" };
        Thread.CurrentThread.CurrentCulture.DateTimeFormat.DayNames = newNames;

ただし、en-US では月と日が最初の大文字で表示され、mx-ES ではそうでないのは奇妙です。

それが役に立てば幸い!。

于 2008-10-23T05:00:02.223 に答える
1

スペイン語 (メキシコ) の LongDate のパターンは次のとおりです。

dddd, dd' de 'MMMM' de 'yyyy

Thread.CurrentThread.CurrentCulture.DateTimeFormat.LongDatePatternによると。日と月の最初の文字を手動で大文字に変換するか、Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCaseを使用して「De」を「de」に置き換えるだけでよいと思います。

于 2008-10-23T04:50:11.310 に答える
0

少し遅れましたが、これは私にとってはうまくいきます!

 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");


    }
于 2010-03-30T03:03:37.233 に答える
0

最初の 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;
            }

ループなしでこれをどのように改善できますか?

于 2008-10-23T05:38:50.430 に答える