web-dev-qa-db-fra.com

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 rencontre la colonne de date, j'ai du mal à l’analyser.

Le code que j'ai est:

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

La chaîne dans line[i] est au format 7/7/2011 10:48 L'exception que je reçois dit

La date/heure représentée par la chaîne n'est pas prise en charge dans calendar System.Globalization.GregorianCalendar.

40
Jonathan

Votre chaîne de format est incorrecte. Le changer en

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

C'est parce que vous avez la date au format américain en line[i] et format UK dans le FormatString.

11/20/2011
M / d/yyyy

Je suppose que vous devrez peut-être changer le FormatString en:

"M/d/yyyy h:mm"
3
DaveShaw

C'est probablement le même problème avec les cultures que celui présenté dans ce SO-thread lié: Pourquoi ne peut-on pas analyser DateTime.ParseExact () "9/1/2009" avec "M/j/aaaa"

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

1
Pieter

essaye ça

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