Jonathan
Jonathan

Reputation: 1981

C# DateTime.ParseExact

I have a tab delimited file which is being parsed and then inserted into a database. When I run into the date column, I have trouble parsing it.

The code I have is:

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

The string in line[i] is in the formats: 7/7/2011 10:48 , 10/20/2011 6:27

The exception I get says

The DateTime represented by the string is not supported in calendar System.Globalization.GregorianCalendar.

Upvotes: 75

Views: 230437

Answers (5)

Youness zagouri
Youness zagouri

Reputation: 29

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

Upvotes: 0

Fischermaen
Fischermaen

Reputation: 12468

Your format string is wrong. Change it to

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

Upvotes: 126

Glory Raj
Glory Raj

Reputation: 17701

try this

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

Upvotes: 1

DaveShaw
DaveShaw

Reputation: 52818

That's because you have the Date in American format in line[i] and UK format in the FormatString.

11/20/2011
M / d/yyyy

I'm guessing you might need to change the FormatString to:

"M/d/yyyy h:mm"

Upvotes: 4

Pieter
Pieter

Reputation: 3399

It's probably the same problem with cultures as presented in this related SO-thread: Why can't DateTime.ParseExact() parse "9/1/2009" using "M/d/yyyy"

You already specified the culture, so try escaping the slashes.

Upvotes: 1

Related Questions