문제

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?

도움이 되었습니까?

해결책

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

다른 팁

Did you try

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

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

PLease try

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

Try this one:

this.RequestDate = Convert.ToDateTime(this.DcmCreateDate).ToString("dd/MM/yyyy");
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top