Reputation: 1981
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
Reputation: 29
var insert = DateTime.ParseExact(line[i].toString(), "d/M/yyyy h:mm", CultureInfo.InvariantCulture);
Upvotes: 0
Reputation: 12468
Your format string is wrong. Change it to
insert = DateTime.ParseExact(line[i], "M/d/yyyy hh:mm", CultureInfo.InvariantCulture);
Upvotes: 126
Reputation: 17701
try this
var insert = DateTime.ParseExact(line[i], "M/d/yyyy h:mm", CultureInfo.InvariantCulture);
Upvotes: 1
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
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