2010-01-04 10 views
7

Я пытаюсь преобразовать строку в DateTime с помощью следующего кода C#,DateTime.ParseExact формата строка исключение

DateTime dTo = DateTime.ParseExact(dateTo, "mm/dd/yyyy", CultureInfo.InvariantCulture); 

eachtime проходит dateTo, как 1/1/2010 это не удается, вместо этого он нуждается в строке до 01.01.2010.

Какой строковый формат следует использовать для поддержки 01/01/2010 и 1/1/2010?

+0

Не точная DUP, но это охватывает почти такую ​​же территорию: http://stackoverflow.com/questions/1368636/why-cant-datetime-parseexact-parse-9-1-2009-using-md -yyyy – DOK

ответ

16

Использование следующего формата формата даты позволит вам использовать как одно-, так и двузначные элементы дня и месяца.

"M/d/yyyy" 

Обратите внимание, что капитал M значителен - строчная m является заполнителем минут.

Дополнительную информацию о строках формата даты вы найдете here.

Чтобы проверить их, вы можете использовать следующую команду Powershell.

[DateTime]::ParseExact('01/01/2010', 'M/d/yyyy', $null) 
+1

Это не позволит вам иметь ведущие нули? – gingerbreadboy

+1

Ведущие нули принимаются с этой строкой формата. –

+3

Я не знал этого, зеленый гриб для вас, сэр! – gingerbreadboy

3

Капитал M месяц, маленький м мин. Я думаю.

Но, к вопросу, используйте Parse. ParseExact подразумевает, что вы знаете точный формат ввода.

1

Вы можете попробовать этот формат: MM/dd/yyyy, но я думаю, что нет единой строки формата, которая могла бы поддерживать оба входа. Вы можете проверить, если длина вашей строки dateTo меньше 10 символов, используется M/d/yyyy, в противном случае MM/dd/yyyy.