web-dev-qa-db-fra.com

Définir le format DateTime par défaut c #

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.

35
Matthew Hood

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.

52
Paolo Tedesco

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");
}
8
Seb Nilsson

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.

1
Tadas Šukys

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.

1
Bjorn Bailleul

Je ne sais pas si cela fonctionnerait pour une application Web, mais vous pouvez essayer de définir la propriété DateTimeFormat pour la culture actuelle.

Cochez ceci et spécialement ceci .

0
Fernando