2

How to convert a string such as "10/19/2017 12:00:00 AM" into a DateTime? I used Convert.ToDateTime() but It gives an error as;

String was not recognized as a valid DateTime.

How to fix?

2
  • DateTime.Parse("10/19/2017 12:00:00 AM") or ParseExact Commented Oct 19, 2017 at 4:13
  • 1
    Possible duplicate of Parse string to DateTime in C# Commented Oct 19, 2017 at 4:36

3 Answers 3

3

You should use ParseExact

var result = DateTime.ParseExact("10/19/2017 12:00:00 PM", "MM/dd/yyyy HH:mm:ss tt", CultureInfo.InvariantCulture);
Sign up to request clarification or add additional context in comments.

1 Comment

Since AM and PM designators are used for 12-hour clock, I think it would be better to use hh instead of HH specifiers.
2

Convert.ToDateTime doesn't have specified formatting to parse, you need to use DateTime.ParseExact or DateTime.TryParseExact:

// DateTime.ParseExact
DateTime date = DateTime.ParseExact("10/19/2017 12:00:00 PM", "MM/dd/yyyy HH:mm:ss tt", CultureInfo.InvariantCulture);

// DateTime.TryParseExact
DateTime.TryParseExact("10/19/2017 12:00:00 PM", "MM/dd/yyyy HH:mm:ss tt", CultureInfo.InvariantCulture, DateTimeStyles.None, out date);

1 Comment

Since AM and PM designators are used for 12-hour clock, I think it would be better to use hh instead of HH specifiers.
2
 String MyString= "10/19/2017 12:00:00 AM";
        DateTime MyDateTime = new DateTime();
        MyDateTime = DateTime.ParseExact(MyString, "MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);

Format goes as below

d - Numeric day of the month without a leading zero.

dd - Numeric day of the month with a leading zero.

ddd - Abbreviated name of the day of the week.

dddd - Full name of the day of the week.

f,ff,fff,ffff,fffff,ffffff,fffffff - Fraction of a second. The more Fs the higher the precision.

h - 12 Hour clock, no leading zero.

hh - 12 Hour clock with leading zero.

H - 24 Hour clock, no leading zero.

HH - 24 Hour clock with leading zero.

m - Minutes with no leading zero. mm - Minutes with leading zero.

M - Numeric month with no leading zero.

MM - Numeric month with a leading zero.

MMM - Abbreviated name of month.

MMMM - Full month name.

s - Seconds with no leading zero. ss - Seconds with leading zero.

t - AM/PM but only the first letter. tt - AM/PM ( a.m. / p.m.)

y - Year with out century and leading zero.

yy - Year with out century, with leading zero.

yyyy - Year with century.

zz - Time zone off set with +/-.

1 Comment

You don't need DateTime MyDateTime = new DateTime(); because you will create new date anyway DateTime MyDateTime = DateTime.ParseExact(... will be enough.

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.