I am kind of stuck with an issue where I am unable to to parse the date and time from a string, which I am reading from a text file. The string I am getting is in following format:
05SEP1998 2400
and I am trying to parse the string through the following code:
string dateTimeStr = "05SEP1998 2400"
var provider = CultureInfo.InvariantCulture;
const string Format = "ddMMMyyyy hhmm";
var dateTime = DateTime.ParseExact(dateTimeStr, Format, provider);
But while parsing, the above code throws a FormatException:
String was not recognized as a valid DateTime.
Could anybody please help me fixing this issue?
hh
is 12 hour, HH
is 24 hour. However, it must be in the range 0-23, not 24. If you can't easily change how those date strings are generated, you can parse it manually:
string dateTimeStr = "05SEP1998 2400";
var provider = CultureInfo.InvariantCulture;
const string Format = "ddMMMyyyy HHmm";
int HourPos = Format.IndexOf("HH");
var hour = dateTimeStr.Substring(HourPos, 2);
bool addDay = hour == "24";
if (addDay)
dateTimeStr = dateTimeStr.Substring(0, HourPos) + "00" + dateTimeStr.Substring(HourPos + 2);
var dateTime = DateTime.ParseExact(dateTimeStr, Format, provider);
if (addDay)
dateTime += TimeSpan.FromHours(24);
Note that this will throw exceptions if dateTimeStr
doesn't have the right number of characters. You might want to handle that better.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With