2009-06-23 14 views
1

Pour une raison quelconque, le code ASP.NET sur mon serveur retourne maintenant un format de jj/mm/aaaa au lieu de MM/jj/aaaa lorsque j'utilise DateTime .ToString ("g"). Plutôt que de remplacer toutes les chaînes au format "g" par une chaîne de format concret ou un argument CultureInfo, y a-t-il un moyen de remplacer, dans l'application, le format "short date" par défaut?changement ASP.NET par défaut pour la culture Date de mise en forme

Ma préférence est réellement "aaaa-MM-jj" comme format par défaut, mais je peux vivre avec le MM/jj/yyyy centré sur les US, comme tous les utilisateurs sont aux États-Unis. Je ne veux pas changer toute la culture par défaut, ce qui pourrait avoir un impact sur des choses telles que la monnaie et l'utilisation de nombres décimaux/virgules dans les nombres de formatage. Je veux juste remplacer tout appel ToString ("g") pour utiliser le format de date ISO/CEI 8824 ("aaaa-MM-jj").

Je pourrais rechercher et remplacer à travers mon code pour forcer un CultureInfo dans chaque appel ToString(), mais cela ne me semble pas la solution la plus maintenable. Ma solution actuelle est que j'ai défini une méthode statique pour le formatage d'une date, et je l'appelle à la place de ToString() sur l'ensemble de ma base de code. Mais encore une fois, si j'oublie de le faire quelque part dans le code, j'aurai encore une date idiote.

Répondre

0

La définition de la culture n'était pas une option et ne dépendait pas des paramètres régionaux du serveur.

Je fini par écrire une fonction d'utilité pour les dates de mise en forme:

Public Shared Function FormatShortDate(ByVal d As Date) As String 
    If d=#1/1/0001# Then Return "" 
    If d=#1/1/1900# Then Return "" 
    'ISO/IEC 8824 date format 
    Return d.ToString("yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture) 
End Function 

Je l'appelle partout où je dois pousser une date vers l'utilisateur. Il gère également l'affichage des dates par défaut ("magic").

J'ai écrit des fonctions similaires pour FormatShortDateTime et FormatLongDateTime.

+0

La réponse dans l'URL suivante semble plus appropriée que d'écrire une fonction personnalisée: http://stackoverflow.com/questions/5505647/different-datetimeformat-for-the-same-culture-in-different-machines. Il remplace simplement le modèle de la date d'échéance de la culture actuelle. Cependant, ce n'est pas l'idéal. – Feyyaz

1

Vous pouvez définir la culture par défaut au niveau du fichier web.config (niveau d'application), de la directive Page ou de la directive de contrôle.

J'ai plusieurs applications où les pages maîtres sont configurées pour différentes cultures, et les pages et les contrôles héritent de là.

+0

Fermez, mais cela a un impact sur tous les formats contrôlés par CultureInfo par défaut, et pas uniquement sur les formats DateTime. – richardtallent

-1

Vous pouvez manipuler le format de date courte en modifiant le paramètre dans les paramètres régionaux dans le panneau de configuration de votre serveur.