41 votes

Définir le format par défaut de l'heure de la date 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éflexions. Ce serait beaucoup plus simple si je pouvais remplacer le format DateTime.ToString() par défaut par "dd-MMM-yyyy". Je ne veux pas que ce format change lorsque le site est exécuté sur une autre machine.

Modifier - Juste pour clarifier, je veux dire spécifiquement l'appel de la ToString, pas une autre fonction d'extension, c'est à cause de la réflexion / code généré. Il serait plus facile de modifier simplement la sortie ToString.

59voto

Paolo Tedesco Points 22442

Le "format par défaut" d'une date est :

ShortDatePattern + ' ' + LongTimePattern

au moins dans l'actuel implémentation mono . Ceci est particulièrement pénible dans le cas où vous voulez afficher quelque chose comme 2001-02-03T04:05:06Z, c'est-à-dire la date et l'heure combinées telles que spécifiées dans le champ 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);
        }
    }
}

Ceci définira le comportement par défaut de ToString sur les dates afin de retourner le format que vous attendez.

9voto

Seb Nilsson Points 8619

Il dépend des paramètres de localisation de votre application. Changez cela en conséquence pour obtenir le format correct.

Sinon, ayez une classe d'aide 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");
}

1voto

Tadas Points 1992

DateTime.ToString() combine les chaînes de format personnalisées renvoyées par les propriétés ShortDatePattern et LongTimePattern de l'objet DateTimeFormatInfo . Vous pouvez spécifier ces modèles dans DateTimeFormatInfo.CurrentInfo .

Je n'ai jamais essayé moi-même.

1voto

Bjorn Bailleul Points 359

Si vous voulez être sûr que votre culture reste la même, il suffit de la définir vous-même pour éviter les problèmes.

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 de discussion comme étant belge-néerlandaise.

CurrentCulture s'occupe de la gestion de la date et de l'heure et CurrentUICulture s'occupe de la localisation de l'interface utilisateur comme des ressources.

-2voto

ema Points 2346

Vous pouvez écrire une ExtensionMethod comme ceci :

public static string ToMyString(this DateTime dateTime)
{
  return dateTime.ToString("needed format");
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X