web-dev-qa-db-fra.com

comment changer les dates en-US en en-GB pour asp.net?

sur une machine de développement (cassini)

new DateTime(2012,3,14).ToString("d")

résulte en

14/03/2012

ce qui est correct mais lorsqu'il est déployé sur un serveur complet IIS le résultat est

03/14/2012

Le serveur est défini dans le panneau de configuration/langue de la région sur tous les anglais/Royaume-Uni/Go, la date d'exécution dans l'invite de commande renvoie le format jj/MM/AAAA.

Le site est configuré pour les deux uiCulture="en-GB" et culture="en-GB" et ceux-ci s'affichent dans la balise globalisation web.config.

Je peux contourner ce problème en ajoutant une culture forcée

new DateTime(2012,3,14).ToString("d", new CultureInfo("en-GB"));

mais je voudrais vraiment savoir ce qui définit le format incorrectement.

CultureInfo.CurrentCulture.Name, CultureInfo.CurrentUICulture.Name

les deux renvoient en-US


  • en-US: M/d/yyyy (par exemple, le 14/03/2012)
  • en-GB: dd/MM/yyyy (par exemple, 14/03/2012)

Valeur réelle dans web.config

 <globalization requestEncoding="UTF-8" responseEncoding="UTF-8" uiCulture="en-GB" culture="en-GB" />
21
rob

J'ai réussi à le faire fonctionner en le mettant dans le web.config

<globalization culture="en-GB"/>
28
Jon

Dans ton web.config ajouter

<globalization culture='auto' uiCulture='auto' />

et puis, en supposant que le navigateur est correctement configuré pour passer les paramètres régionaux préférés, le thread de travail traitant la demande aura son CurrentCulture et CurrentUICulture correctement défini.

Toutes les opérations dépendantes des paramètres régionaux (y compris des choses telles que DateTime format d) utiliseront la préférence du client.

Élément de mondialisation de web.config sur MSDN: https://msdn.Microsoft.com/en-us/library/ydkak5b9 (v = vs.71) .aspx

4
Richard