DateTime.ParseExact() does not grok 24-hour time values?

B. Clay Shannon picture B. Clay Shannon · Jun 27, 2012 · Viewed 17.6k times · Source

This line of code:

DateTime dt = DateTime.ParseExact(time, "hh:mm", CultureInfo.InvariantCulture);

parses a "time" value of "12:45" just fine, but throws an exception of "13:00"

Should I be using some other CultureInfo value, or do I need to append a "pm" to hour values above 12, or ... ?

Error message is: System.FormatException was unhandled Message=String was not recognized as a valid DateTime.

Answer

Dave New picture Dave New · Jun 27, 2012

"hh" is the 12-hour clock format (01 to 12). You need to use "HH" for a 24 hour clock.

DateTime dt = DateTime.ParseExact(time, "HH:mm", CultureInfo.InvariantCulture);