Исключение формата строки DateTime.ParseExact - PullRequest
7 голосов
/ 04 января 2010

Я пытаюсь преобразовать строку в datetime с помощью следующего кода C #,

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

каждый раз, когда я передаю dateTo как 01.01.2010, он терпит неудачу, вместо этого ему нужно, чтобы строка была 01.01.2010.

Какой формат строки следует использовать для поддержки 01.01.2010 и 01.01.2010?

Ответы [ 3 ]

16 голосов
/ 04 января 2010

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

"M/d/yyyy"

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

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

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

[DateTime]::ParseExact('01/01/2010', 'M/d/yyyy', $null)
3 голосов
/ 04 января 2010

Столица М - месяц, я думаю, мало м - минут.

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

1 голос
/ 04 января 2010

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

...