2017-02-20 22 views
0

Я уверен, что делаю какую-то очень тупую ошибку, но это сводит меня с ума.DateTime.ParseExact throwing exception

Я пытаюсь сделать следующее:

var dateTime = DateTime.ParseExact("08/24/2016 12:00:00 AM", "MM/dd/yyyy HH:mm:ss tt", CultureInfo.InvariantCulture); 

Но я получаю следующее исключение: «Строка не был признан действительным DateTime.»

Я попытался: "М/дд/гггг чч: мм: сс тт" "ММ '/' дд '/' YYYY HH: мм: сс тт" «М '/' дд '/' yyyy HH: mm: ss tt "

Но ничего не работает до сих пор ... Любая помощь будет оценена по достоинству.

+0

Это работает для меня, я получаю выход 24/08/2016 12 : 00: 00 – imsome1

+0

Измените строку формата на это: '' MM/dd/yyyy hh: mm: ss tt "' – Pikoh

ответ

7

HH ищет 24-часовой формат, но вы также переходящий в AM и указании tt - синтаксический анализатор не может с этим справиться. Вам нужно либо искать строки, основанной на 12-часовой:

var dateTime = DateTime.ParseExact("08/24/2016 12:00:00 AM", "MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture); 

с помощью hh или удалить AM/tt часть.

+0

Хороший способ запомнить это «hh» - это «маленькие часы», «HH» - «большие часы». –

+0

Я знал, что это что-то маленькое ... спасибо! – Talon

2

Использовать hh для 12-часового формата вместо HH для 24-часового формата. Эта информация уже находится в AM/PM и не может быть обработана дважды методом.

var dateTime = DateTime.ParseExact("08/24/2016 12:00:00 AM", "MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture); 
+0

Я знал, что это что-то маленькое ... спасибо! – Talon

1

Вы должны использовать hh вместо HHHH, потому что используется 24-часовой формат, и вы также указать ampm в формате

var dateTime = DateTime.ParseExact("08/24/2016 12:00:00 AM", "MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture); 
+0

Я знал, что это что-то маленькое ... спасибо! – Talon