5

I can't figure it out, where did I go wrong?

I got the following datetime string, and need to parse it to datetime:

string timestr = "1/20/2014 12:05:16 AM"

And I trying to parse it like this:

DateTime.ParseExact( timestr,
                     "MM/dd/yyyy hh:mm:ss tt",
                     null);

When trying to do this it returns

"string was not recognized as a valid DateTime"

Any tip?

5 Answers 5

12

MM is for 01 to 12

Use M instead which is for 1 to 12.

string timestr = "1/20/2014 12:05:16 AM";
var date = DateTime.ParseExact(timestr,
                               "M/dd/yyyy hh:mm:ss tt",
                               CultureInfo.InvariantCulture);
Console.WriteLine(date);

Output will be;

1/20/2014 12:05:16 AM

Here a demonstration.

For more information, take a look at;

Also be careful about your hour formatting. hh is for 01 to 12, HH is for 00 to 23. If your hour will be 13, 14 or 15 etc.. hh format will fail.

And since you using null as a IFormatProvider in your DateTime.ParseExact method, that means it uses CurrentCulture by default. And if it's DateSeparator is not /, your method throws FormatException even your string and format matches exactly because "/" format specifier has a special meaning in custom date and time formats like; replace me current culture's or suplied culture date separator

Sign up to request clarification or add additional context in comments.

Comments

0

Did you try

 DateTime returnedDate = new DateTime();
 DateTime.TryParse(timestr, out returnedDate);

1 Comment

If OP's CurrentCulture doesn't accept M/dd/yyyy hh:mm:ss tt as a standard date and time pattern, your DateTime.TryParse returns false and your returnedDate will be 01/01/0001 00:00:00.
0

M-The month, from 1 through 12.

The "M" custom format specifier represents the month as a number from 1 through 12 (or from 1 through 13 for calendars that have 13 months). A single-digit month is formatted without a leading zero.

DateTime.ParseExact( timestr,"M/dd/yyyy hh:mm:ss tt",CultureInfo.InvariantCulture);

Msdn

Comments

0

PLease try

string timestr = "1/20/2014 12:05:16 AM";
DateTime dt = new DateTime();
DateTime.TryParse(timestr, out dt);

3 Comments

Please don't just post code, please explain to the user what the code does so they can learn from it, as is the reason they have come to stackoverflow
You don't have to initialize out parameter by the way. DateTime dt; will be enough.
If OP's CurrentCulture doesn't accept M/dd/yyyy hh:mm:ss tt as a standard date and time pattern, your DateTime.TryParse returns false and your dt will be 01/01/0001 00:00:00.
-2

Try this one:

this.RequestDate = Convert.ToDateTime(this.DcmCreateDate).ToString("dd/MM/yyyy");

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.