Преобразовать строку типа «мм / дд / гггг чч: мм: сс тт» в DateTime - PullRequest
0 голосов
/ 07 марта 2019

Мне нужно преобразовать строку, например 23.10.2017, 12:00:00, в DateTime.

(с помощью ссылки Преобразовать строку в Datetime дд / мм / гггг чч: мм: сс тт )

DateTime date1 = DateTime.ParseExact(dateString, "mm/dd/yyyy hh:mm:ss tt",
        System.Globalization.CultureInfo.InvariantCulture);

Когда я запускаю данный код, я получаю:

System.FormatException

Ошибка также говорит о том, что

Строка не была распознана как действительный DateTime.

Как мне преобразовать строку в DateTime?

1 Ответ

5 голосов
/ 07 марта 2019

Большинство проблем при разборе из-за неправильных строк формата - и это здесь.Посмотрите на строку формата:

mm/dd/yyyy hh:mm:ss tt

Это означает:

  • 2-значный минут
  • 2-значный деньмесяц
  • 4-значный год
  • 2-значный полдня (1-12)
  • 2-значный минуты
  • 2-значные секунды
  • am / pm обозначение

Здесь есть два подозрительных аспекта:

  • Вы указываете минуты дважды.Вы действительно имели в виду месяц года для первой части, что означает, что вы хотите MM
  • Вы указываете двузначный час полдня, которыйредко используемый.Например, я ожидаю увидеть «8:00:00 AM», а не «08:00:00 AM».

Так что я подозреваю, что вам нужна строка формата:

MM/dd/yyyy h:mm:ss tt

Полный код:

DateTime date1 = DateTime.ParseExact(
    dateString, "MM/dd/yyyy h:mm:ss tt", CultureInfo.InvariantCulture);
...