Question

J'ai écrit une application asp.net et l'une de mes routines de post-édition enregistre simplement les données de formulaire soumises par l'utilisateur dans une base de données SQL 2005. Tout fonctionne bien sur ma machine de développement, mais lorsque je déploie sur le site actif, les dates de mon vérificateur de date d'analyse ne sont pas valides.

En gros, on attend un format de date américain sur la machine en direct, mais ce n’est pas ce que je veux. L'utilisateur doit pouvoir entrer au format jj / mm / aaaa. Donc, une date valide telle que 21/10/2009 renvoie des erreurs sur le serveur live, mais pas sur ma machine dev. Vous trouverez ci-dessous le code qui lève l'exception.

DateTime dt;
dt = DateTime.Parse(sdate);  
//sdate in GB dd/MM/yyyy format

Est-il possible de forcer la routine d'analyse à attendre la date au format jj / mm / aaaa?

Était-ce utile?

La solution

Faites comme ceci:

    System.Globalization.CultureInfo cultureinfo = 
        new System.Globalization.CultureInfo("en-gb");
    DateTime dt = DateTime.Parse("13/12/2009", cultureinfo);

Autres conseils

Vous pouvez utiliser DateTime.ParseExact pour spécifier un format attendu.

Une autre option consiste à spécifier la culture que vous souhaitez utiliser dans le fichier web.config:

<system.web>
    ...
    <globalization 
        culture="da-DK" 
        uiCulture="da-DK" requestEncoding="utf-8" responseEncoding="utf-8"
    />
</system.web>

Oui, ParseExact le fera comme mentionné par Matt.

Le code ressemblerait à quelque chose comme:

dt  = DateTime.ParseExact(sdate, "dd/MM/yyyy", CultureInfo.InvariantCulture);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top