30

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.

B. Clay Shannon-B. Crow Raven
  • 8,547
  • 144
  • 472
  • 862

3 Answers3

66

"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);
Dave New
  • 38,496
  • 59
  • 215
  • 394
2

Try this:

DateTime dt = DateTime.ParseExact(time, "u", CultureInfo.InvariantCulture);

"u" indicates universal sortable format.

2

Though Hans already answered your question in comment section, Here is an MSDN link describing all kinds of date formats used with DateTime.ParseExact method.

Estefany Velez
  • 328
  • 4
  • 18