67 votes

C# DateTime.ParseExact

J'ai un fichier délimité par des tabulations qui est analysé puis inséré dans une base de données. Lorsque je tombe sur la colonne date, j'ai du mal à l'analyser.

Le code que j'ai est le suivant :

var insert = DateTime.ParseExact(line[i], "d/M/yyyy h:mm", CultureInfo.InvariantCulture);

La chaîne de caractères dans line[i] est dans les formats : 7/7/2011 10:48 , 10/20/2011 6:27

L'exception que j'obtiens est la suivante

La date et l'heure représentées par la chaîne ne sont pas s System.Globalization.GregorianCalendar.

3 votes

Cela fonctionne pour moi, sans changement pour la chaîne de dates fournie.

1 votes

Cela fonctionne pour moi, peut-être qu'une chaîne dans la liste des lignes a un format incorrect.

104voto

Fischermaen Points 7006

Votre chaîne de format est incorrecte. Remplacez-la par

insert = DateTime.ParseExact(line[i], "M/d/yyyy hh:mm", CultureInfo.InvariantCulture);

1 votes

Ne voulez-vous pas dire M/d/yyyy o d/M/yyyy Il n'y a pas de zéros en tête dans son exemple.

1 votes

@Sign : Vous avez raison ! J'ai modifié ma réponse. Merci de le signaler.

0 votes

Je n'arrive pas à croire que j'ai raté ça. Il s'avère que la date était en M/j/aaaa au lieu de J/M/aaaa. Je ne l'avais pas remarqué parce que les premières dates étaient au début du mois.

4voto

DaveShaw Points 19555

C'est parce que la date est au format américain dans la rubrique line[i] et au format britannique dans le FormatString .

11/20/2011
M / d/yyyy

Je suppose qu'il faut changer le FormatString en :

"M/d/yyyy h:mm"

1voto

Pieter Points 2031

Il s'agit probablement du même problème avec les cultures que celui présenté dans ce fil de discussion sur le SO : Pourquoi DateTime.ParseExact() n'analyse-t-il pas "9/1/2009" en utilisant "M/d/yyyy" ?

Vous avez déjà spécifié la culture, alors essayez d'échapper les barres obliques.

1voto

pratap k Points 9133

Essayez ceci

var  insert = DateTime.ParseExact(line[i], "M/d/yyyy h:mm", CultureInfo.InvariantCulture);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X