comment mettre en majuscule la date et le mois de la première lettre du résultat de ToLongDateString () dans la culture es-mx?
-
04-07-2019 - |
Question
J'obtiens actuellement le résultat ci-dessous à partir de la ligne de code C # suivante en es-MX Culture
Thread.CurrentThread.CurrentCulture =
Thread.CurrentThread.CurrentUICulture = new
CultureInfo("es-mx");
<span><%=DateTime.Now.ToLongDateString()%></span>
mi & # 233; écoles, 22 octobre 2008
je voudrais obtenir ce qui suit
Régions, le 22 octobre 2008
Dois-je créer ma propre culture?
La solution
Vous n'avez pas besoin de créer votre propre culture. Il vous suffit de modifier les propriétés DateTimeFormat.DayNames et DateTimeFormat.MonthNames dans la culture actuelle.
c'est-à-dire
string[] newNames = { "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado", "Domingo" };
Thread.CurrentThread.CurrentCulture.DateTimeFormat.DayNames = newNames;
Cependant, il est étrange que les États-Unis affichent des mois et des jours avec la première lettre majuscule, mais pas pour mx-ES.
J'espère que ça aide!.
Autres conseils
Le modèle de LongDate pour l'espagnol (Mexique) est
.
dddd, dd 'de' MMMM 'de' yyyy
selon Thread.CurrentThread.CurrentCulture.DateTimeFormat .LongDatePattern . Je suppose que vous devez simplement convertir manuellement les premières lettres du jour et du mois en majuscules ou vous pouvez utiliser Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase , puis remplacez & De; De " avec "de".
Les deux premières solutions fonctionnent bien, mais si nous souhaitions étendre cela à n’importe quelle culture, j’ai donc proposé cette approche: je change les tableaux de dates de culture actuels 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;
}
comment cela peut-il être amélioré sans la boucle?
un peu tard mais ça marche pour moi!
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");
}