C # DateTime Parser Ошибка? - PullRequest
       1

C # DateTime Parser Ошибка?

1 голос
/ 14 февраля 2012

дано:

        DateTime parsedDate;

        if (DateTime.TryParseExact("0992012", "ddMyyyy", null, DateTimeStyles.NoCurrentDateDefault, out parsedDate))
        {
            Debug.WriteLine("YES");
        }
        else
        {
            Debug.WriteLine("NO");
        }

Почему на выходе НЕТ?Это ошибка?

Ответы [ 2 ]

6 голосов
/ 14 февраля 2012

Это плохой формат, в основном - я не знаю, указано ли , должно ли оно быть принято или нет, но включение числового поля переменной ширины рядом с другими числовыми полями без разделителей является действительно плохая идея .

Я подозреваю парсер видит это как 09, за которым следует 92 в «взять 1 или 2 цифры за месяц» и не понимает, что2 предназначено, чтобы принадлежать части года.Это то, что будет делать синтаксический анализатор Noda Time, по крайней мере ...

Если вы не можете изменить свой формат ввода, вы должны массировать данные на месте, прежде чем пытаться их проанализировать - например,

if (text.Length == 7)
{
    text = text.Substring(0, 2) + "0" + text.Substring(2);
}
// Now parse as ddMMyyyy
3 голосов
/ 14 февраля 2012

Я подозреваю, что это как-то связано с кодом M, состоящим из одного или двухзначного месяца.Без разделителя определить, где заканчивается месяц и начинается год, нетривиально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...