C # DateTime Проблема разбора - PullRequest
2 голосов
/ 16 декабря 2009

Мой текущий код выглядит так:

        DateTime dateBegin = DateTime.ParseExact(begin, "MM/dd/yyyy", null);
        DateTime dateEnd = DateTime.ParseExact(end, "MM/dd/yyyy", null);

Но он выдает исключение всякий раз, когда дата в "конце" отличается. Я получаю даты из элемента управления DateTimePicker, таким образом, дата может выглядеть как «1/12/2010», и тогда она выдаст исключение. Как мне избежать этого?

Спасибо.

Ответы [ 5 ]

12 голосов
/ 16 декабря 2009

Это winforms? просто используйте .Value на сборщике, и вы получите право DateTime - не нужно разбирать.

В конечном счете, "1/12/2010" не"ММ / дд / гггг"; Вы также можете попробовать "" M / d / yyyy "как запасной вариант?

string s = "1/12/2010";
string[] formats = { "MM/dd/yyyy", "M/d/yyyy", "M/dd/yyyy", "MM/d/yyyy" };
DateTime value = DateTime.ParseExact(s, formats, CultureInfo.CurrentCulture, DateTimeStyles.None);
4 голосов
/ 16 декабря 2009

Если вы получаете значение из DateTimePicker, почему бы не использовать значение этого элемента управления, который уже является DateTime? Я не уверен, почему вы пытаетесь разобрать строку ...

4 голосов
/ 16 декабря 2009

Почему бы вам не использовать DateTimePicker.Value?

0 голосов
/ 16 декабря 2009

как насчет этого?

string begin = @"1/12/2010";
DateTime dateBegin = DateTime.ParseExact(begin, "M/dd/yyyy", null);

Хороший справочник:

http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

0 голосов
/ 16 декабря 2009

Если вы предоставили информацию о стеке / исключении, возможно, вам будет проще помочь, но я ожидаю, что она выбрасывается, поскольку ParseExact дает сбой, вероятно, потому что он не соответствует формату, который вы пытаетесь сузить, тоже * *

...