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? :)
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.
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
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
essayez ça marche
DateTime.ParseExact("01-08-2012 15:36:25", "dd-MM-yyyy HH:mm:ss", null);