Existe-t-il un moyen de définir ou de remplacer le format DateTime par défaut pour une application entière. J'écris une application en C # .Net MVC 1.0 et j'utilise beaucoup de génériques et de réflexion. Ce serait beaucoup plus simple si je pouvais remplacer le format DateTime.ToString () par défaut par "jj-MMM-aaaa". Je ne souhaite pas que ce format change lorsque le site est exécuté sur une autre machine.
Modifier - Juste pour clarifier, je veux dire spécifiquement appeler la ToString, pas une autre fonction d'extension, c'est à cause de la réflexion/du code généré. Il serait plus facile de simplement modifier la sortie ToString.
Le "format par défaut" d'un datetime est:
ShortDatePattern + ' ' + LongTimePattern
au moins dans le courant implémentation mono . Ceci est particulièrement douloureux si vous souhaitez afficher quelque chose comme 2001-02-03T04: 05: 06Z, c'est-à-dire la date et l'heure combinées comme spécifié dans ISO 8606 , mais ce n'est pas un gros problème dans votre cas:
using System;
using System.Globalization;
using System.Threading;
namespace test {
public static class Program {
public static void Main() {
CultureInfo culture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
culture.DateTimeFormat.ShortDatePattern = "dd-MMM-yyyy";
culture.DateTimeFormat.LongTimePattern = "";
Thread.CurrentThread.CurrentCulture = culture;
Console.WriteLine(DateTime.Now);
}
}
}
Cela définira le comportement par défaut de ToString sur les horaires pour renvoyer le format que vous attendez.
Cela dépend des paramètres de localisation de votre application. Modifiez cela en conséquence pour obtenir le format correct.
Sinon, utilisez une classe d'assistance ou une méthode d'extension qui gère toujours votre DateTime.
public static string ToMyDateTime(this DateTime dateTime) {
return dateTime.ToString("dd-MMMM-yy");
}
DateTime.ToString () combine les chaînes de format personnalisé renvoyées par les propriétés ShortDatePattern et LongTimePattern des DateTimeFormatInfo . Vous pouvez spécifier ces modèles dans DateTimeFormatInfo.CurrentInfo .
Je n'ai jamais essayé ça moi-même.
Si vous voulez être sûr que votre culture reste la même, définissez-la vous-même pour éviter les ennuis.
System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("nl-BE");
System.Threading.Thread.CurrentThread.CurrentCulture = ci;
System.Threading.Thread.CurrentThread.CurrentUICulture = ci;
L'exemple ci-dessus définit la culture du fil en belgo-néerlandais.
CurrentCulture s'occupe de la gestion de la date et de l'heure et CurrentUICulture gère la localisation de l'interface utilisateur comme les ressources.