web-dev-qa-db-fra.com

DateTime.ParseExact donne que String n'a pas été reconnu comme un DateTime valide.

J'essaie d'analyser une chaîne de date dans une variable DateTime. J'ai découvert que ParseExact est le moyen de le faire, mais j'essaie, j'obtiens l'erreur suivante:

La chaîne n'a pas été reconnue comme un DateTime valide.

string timeFormat = "dd-MM-yyyy hh:mm:ss";
DateTime startDate = DateTime.ParseExact(reader["startdate"].ToString(), timeFormat, CultureInfo.InvariantCulture);
DateTime nextDate = DateTime.ParseExact(reader["nextdate"].ToString(), timeFormat, null);

J'ai essayé les deux avec null (ce qui se passe sur une autre page), et le CultureInfo.InvariantCulture.

reader["startdate"].ToString() output: 01-08-2012 15:39:09

et

reader["nextdate"].ToString() output: 01-08-2012 15:39:09

Je pense que ça devrait marcher, mais ça ne marche pas.

Quelqu'un a une idée de ce qui ne va pas? :)

15
DesignMonkeyDK

Vous utilisez hh dans votre chaîne de format. C'est un champ "heure du jour" de 12 heures. La valeur 15 n'est pas dans les limites ...

Vous voulez plutôt HH, qui est le spécificateur de 24 heures.

Consultez la documentation des chaînes de format de date et d'heure personnalisées MSDN } pour plus d'informations.

42
Jon Skeet

Très probablement en raison de la différence entre les paramètres régionaux de votre serveur et les paramètres régionaux de l'interface utilisateur

Une méthode plus simple consiste à spécifier les détails de la mondialisation dans le fichier web.config.

comme

<configuration>
   <system.web>
      <globalization culture="en-GB"/>
   </system.web>
</configuration>

OU plus en détail

<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="en-GB" uiCulture="en-GB" />

Mais assurez-vous que cela n'entrera pas en conflit avec votre application en général

1
Anoop Aravind

Je ne suis pas sûr que cela aide mais j'ai utilisé le code exact de cet article et cela a fonctionné pour moi car DateTime.ParseExact (dat, "jj/MM/aaaa HH: MM", CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles. Aucun) n'a pas fonctionné pour moi.

Lisez ce que je viens de publier en ligne: http://rochcass.wordpress.com/2012/08/27/error-string-was-not-recognized-as-a-valid-datetime-solution/# plus-350

0
Rochelle Cassar

essayez ça marche

DateTime.ParseExact("01-08-2012 15:36:25", "dd-MM-yyyy HH:mm:ss", null);
0
Hassan Boutougha