Nick Spicer
Nick Spicer

Reputation: 2707

DateTime.TryParseExact not working with expected string

Hi I have the following method and I'm passing it the value "07 Jan 2014 13:48:46" and from what I understand the TryParseExact should be matching the format "dd MMM yyyy hh:mm:ss" and returning true, however it is returning false, any ideas?

string[] formats= {"dd-MM-yyyy hh:mm:ss",
                   "dd MMM yyyy hh:mm:ss",
                   "dd MMM yyyy",
                   "hh-mm-ss",
                   "dd-MM-yyyy",
                   "dd-MM-yy",
                  };

 DateTime result;
 if (DateTime.TryParseExact(value, formats, CultureInfo.CurrentCulture, DateTimeStyles.None, out result))
 {
     return result;
 }
 return null;

Upvotes: 1

Views: 8058

Answers (2)

Triynko
Triynko

Reputation: 19204

24-hour time requires use of HH, not hh. Lowercase h is for 12 hour time.

See: http://msdn.microsoft.com/en-us/library/8kb3ddd4%28v=vs.110%29.aspx

Upvotes: 15

Soner Gönül
Soner Gönül

Reputation: 98750

Because none of your format have 24-hour clock.

hh specifier is for 01 to 12. It doesn't have 13 as an hour.

Use HH specifier instead which is for 00 to 23.

For more information, take a look at;

Upvotes: 4

Related Questions