2009-12-31 2 views
2

пытается решить этот в течение нескольких часов ...DateTime Анализировать дилемма в C#

string date = "2009-09-23T13:00:00" 

DateTime t = new DateTime(); 
t = DateTime.ParseExact(date, "HH:mm", null); 

Результаты в этом исключения:

System.FormatException было необработанное Message = "Строка не была признана в качестве действительный DateTime. "

+0

Но если я хочу иметь DateTime, состоящий всего из часов и минут? –

ответ

15
t = DateTime.ParseExact(date, "yyyy-MM-ddTHH:mm:ss", null); 

С ParseExact, вы пытаетесь взять строку и сказать парсер точно, в каком формате строка находится. Эта строка будет преобразовать это действительный DateTime.

Если вы хотите показывать только часы и минуты, вы бы затем добавить следующее:

string myString = t.ToString("HH:mm"); 
4

Вы должны указать всю строку, из которой он разобранный.

DateTime.ParseExact(date, "yyyy-MM-ddTHH:mm:ss", null); 
+0

ParseExact возвращает DateTime или генерирует исключение (без логического возврата). Методы TryParse возвращают логические значения. –

+0

ParseExact не возвращает bool, он возвращает DateTime ... – Webleeuw

+0

@Sean, Webleeuw: О да, правильно ... получили эти два смешались, извините. – Bobby

1

ParseExact требует, чтобы строка точно соответствовала формату. Этого нет. Вам нужна yyyy-MM-ddTHH: mm: ss как ваша строка.

2

В документации сказано все:

Формат представления строки должно соответствовать указанному формату точно или исключение составляет выброшен.

Ваша строка даты не соответствует формату HH: mm.

Кстати, вы можете оставить = новый DateTime(); часть прочь.

4

Вы пытаетесь указать формат, который не соответствует входу. ParseExact требует указать формат ввода; вы не можете просто указать формат, указывающий, какие компоненты вы хотите извлечь.

Формат, который вы должны использовать здесь: "yyyy-MM-ddTHH:mm:ss".

Однако, учитывая, что это выглядит как формат даты/времени XML, тогда вам может быть лучше использовать метод XmlConvert.ToDateTime, поскольку он может обрабатывать тонкости спецификации формата даты XML.

+0

XmlConvert был ответом, который я искал (в противном случае я бы добавил его; -p) –

Смежные вопросы