كيف تؤدي الحرف الأول والشهر الأول من tolongdatestring () إلى ثقافة ES-MX؟

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

سؤال

حاليًا أحصل على النتيجة أدناه من خط الرمز C# التالي عندما يكون في ثقافة ES-MX

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

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

Miércoles ، 22 De Octubre de 2008

أود الحصول على ما يلي

Miércoles ، 22 De Octubre de 2008

هل أحتاج إلى بناء ثقافتي الخاصة؟

هل كانت مفيدة؟

المحلول

لا تحتاج إلى بناء ثقافتك الخاصة. تحتاج فقط إلى تغيير خاصية DateTimeFormat.DayNames و DateTimeFormat.MonthNames في الثقافة الحالية.

بمعنى آخر

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

ومع ذلك ، فمن الغريب أن تظهر شهور وأيام في الولايات المتحدة مع أول حرف كبير وللأشخاص MX-ES.

أتمنى أن يساعد!.

نصائح أخرى

نمط Longdate للإسبانية (المكسيك) هو

dddd, dd' de 'MMMM' de 'yyyy

بالنسبة الى thread.currentThread.CurrentCulture.DateTimeFormat.longdatepattern. أعتقد أنه يتعين عليك فقط تحويل الأحرف الأولية من اليوم والشهر إلى الأحرف الكبيرة أو يمكنك استخدامها thread.currentThread.CurrentCulture.textinfo.totitlecase ثم استبدل "DE" بـ "DE".

أول حلول يعملان بشكل جيد ، لكن ماذا لو نود أن نمد هذا إلى أي ثقافة ، لذا توصلت إلى هذا النهج ، أقوم بتغيير صفائف تاريخ الثقافة الحالية إلى 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