Comment définissez-vous globalement le format de date dans ASP.NET?
Les paramètres régionaux de ma machine et de mes serveurs locaux sont définis sur "Anglais (Nouvelle-Zélande)".
Lorsque je formate une date avec dd/MM/yyyy
Je m'attends à voir 19/11/2008
pour aujourd'hui par exemple.
Jusqu'à récemment, c'est ce que j'obtenais en fait à la fois sur ma machine locale et sur les serveurs.
Tout récemment, pour une raison mystérieuse, nos machines locales ont très légèrement changé. Bien qu'il soit toujours défini sur "Anglais (Nouvelle-Zélande)", le séparateur de date est passé de /
à -
! Le même changement ne s'est pas produit sur les serveurs qui affichent toujours "English (New Zealand)" et le /
pour le délimiteur de date.
Alors maintenant pour ma machine locale, pour le format dd/MM/yyyy
Je reçois 19-11-2008
au lieu de 19/11/2008
.
C'est un peu déconcertant.
La seule façon de contourner ce problème que je vois jusqu'à présent est d'échapper aux barres obliques et de définir le format sur dd\/MM\/yyyy
. Cela semble fonctionner, mais cela ne semble pas être la solution idéale.
Quelqu'un peut-il aider s'il vous plait?
REMARQUE: il s'agit d'une application intranet et je ne me soucie pas de la véritable mondialisation. Je veux juste corriger le format de la date et ne pas le modifier.
Vous pouvez modifier la culture de thread actuelle dans votre fichier Global.asax et remplacer le format de date par exemple:
using System.Globalization;
using System.Threading;
//...
protected void Application_BeginRequest(Object sender, EventArgs e)
{
CultureInfo newCulture = (CultureInfo) System.Threading.Thread.CurrentThread.CurrentCulture.Clone();
newCulture.DateTimeFormat.ShortDatePattern = "dd-MMM-yyyy";
newCulture.DateTimeFormat.DateSeparator = "-";
Thread.CurrentThread.CurrentCulture = newCulture;
}
Dans web.config, définissez la balise selon la documentation suivante
<system.web>
<globalization culture="en-NZ" uiCulture="en-NZ"/>
</system.web>
Une bonne façon est de configurer le Web.Config, le format de date apparaît dans tous les composants d'un aspx
<system.web>
<globalization uiCulture="en" culture="en-NZ" />
</system.web>
Vous pouvez définir votre culture sans manipulation:
using System.Globalization;
using System.Threading;
//...
protected void Application_BeginRequest(Object sender, EventArgs e)
{
Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-NZ");
}
C'est un vieux post, mais j'ai pensé qu'il pourrait être utile de le mentionner ici, mon problème était quelque chose comme ce que le PO a demandé, mais la solution était que la culture avait changé dans l'IIS, pas depuis le panneau de contrôle.
IIS a sa propre sélection de cultures, qui par défaut suivra la culture informatique locale. Mais pour une raison quelconque, il a été changé pour une culture différente, et j'ai commencé à obtenir ces formats de date étranges.
Vous pouvez chercher plus de réponses ici .
Pour les chaînes de format, le caractère de format/ne se résout pas réellement au littéral "/" comme vous vous en doutez. Au lieu de cela, il résout le séparateur d'heure de la date actuelle tel que configuré dans vos paramètres régionaux. Essayez de modifier la propriété DateTimeFormatInfo.DateSeparator.
Pour plus d'informations, voir: http://msdn.Microsoft.com/en-us/library/8kb3ddd4.aspx