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

3

31

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.

Fenton answered 27/6, 2012 at 18:5 Comment(2)
Use "HH:mm" to parse 24 hour formats.Sapp
+1 for using the term "grok" in an SO questionCystic
A
68

"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);
Adumbral answered 27/6, 2012 at 18:12 Comment(0)
S
2

Try this:

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

"u" indicates universal sortable format.

Sherbrooke answered 27/6, 2012 at 18:13 Comment(0)
P
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.

Paynim answered 27/6, 2012 at 18:14 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.