c# - net - cómo mayúscula y la primera letra del mes de ToLongDateString() dan como resultado cultura es-mx?
primera letra mayuscula javascript (4)
El patrón de LongDate para español (México) es
dddd, dd'' de ''MMMM'' de ''yyyy
de acuerdo con Thread.CurrentThread.CurrentCulture.DateTimeFormat.LongDatePattern . Supongo que solo tiene que convertir manualmente las letras iniciales del día y el mes a mayúsculas o puede usar Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase y luego reemplazar "De" con "de".
actualmente obtengo el siguiente resultado de la siguiente línea de código C # cuando en es-MX Culture
Thread.CurrentThread.CurrentCulture =
Thread.CurrentThread.CurrentUICulture = new
CultureInfo("es-mx");
<span><%=DateTime.Now.ToLongDateString()%></span>
miércoles, 22 de octubre de 2008
me gustaría obtener lo siguiente
Miércoles, 22 de Octubre de 2008
¿Necesito construir mi propia cultura?
Las dos primeras soluciones funcionan bien, pero ¿y si quisiéramos extender esto a cualquier cultura, así que se me ocurrió este enfoque? Cambié las matrices de fecha y hora de la cultura actual en 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;
}
¿Cómo se puede mejorar esto con el Loop?
No necesitas construir tu propia cultura. Solo necesita cambiar la propiedad DateTimeFormat.DayNames y DateTimeFormat.MonthNames en la cultura actual.
es decir
string[] newNames = { "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado", "Domingo" };
Thread.CurrentThread.CurrentCulture.DateTimeFormat.DayNames = newNames;
Sin embargo, es extraño que en-US muestre meses y días con la primera letra mayúscula y para mx-ES no.
¡Espero eso ayude!.
un poco tarde, pero este trabajo para mí!
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");
}