У меня есть следующий код, который берет элемент в массиве строк и проверяет, соответствует ли он формату даты и времени. Эта проверка выполняется только для элементов 37, 38, 40, 41. Учитывая следующий код и отладочные распечатки, я вижу, что вывод соответствует синтаксическому анализу. Почему тогда он возвращает false?
Возможные входы:
05/03/2005 23:59:59.999
05/3/2005 23:59:59.999
5/03/2005 23:59:59.999
5/3/2005 23:59:59.999
etc...
Код:
lines[i] = lines[i] + " 23:59:59.999"; //YYYY-MM-DDThh:mm:ss[.mmm]
DateTime datetest;
if (DateTime.TryParseExact(lines[i], "MM/dd/yyyy HH:mm:ss.mmm", new CultureInfo("en-US"), DateTimeStyles.None, out datetest))
{
}
else
{
//Log and Drop
logfile.WriteLine(System.DateTime.Now.ToString("yyyy.MM.dd.HH.mm.ss") + ": Row #" + row + ", Column #" + (i) + " was not a date in the right format, dropping line. ");
logfile.WriteLine("Original: " + lines[i]);
Console.WriteLine("Date Wrong");
Console.WriteLine("Date: " + lines[i]);
string input = Console.ReadLine();
continue;
}
Вывод в консоль:
Date Wrong
Date: 5/23/2004 23:59:59.999
ОБНОВЛЕНИЕ:
Я попытался изменить синтаксический анализ, чтобы вместо этого искать M/dd/yyyy. Однако вместо этого я получаю этот вывод.
Date Wrong
Date: 05/23/2005 23:59:59.999
ОБНОВЛЕНИЕ 2:
Хорошо, я попытался изменить синтаксический анализ, чтобы найти «M/d/yyyy HH:mm:ss.fff», как многие предлагали. Вывод, который я получаю сейчас:
Date Wrong
Date: 23.59.59.999
ОБНОВЛЕНИЕ 3:
Хорошо, теперь я попробовал «M/d/y H:m:s.fff», как было предложено, и я все еще получаю вывод как:
Date Wrong
Date: 05/23/2005 23:59:59.999
M
, как я уже сказал. Это также будет учитывать первые цифры месяца0
. Вам также нужно будет использоватьd
в течение дня и так далее. 02.07.2014