Я работаю над повторной записью существующего программного обеспечения Java в .NET. В какой-то момент, решение Java считывает метку времени в начале строки, просто так:Анализ времени от начала строки в C#
SimpleDateFormat dateFormat = new SimpleDateFormat(timeFormat);
dateFormat.setLenient(false);
try
{
timeStamp = dateFormat.parse(line);
}
catch (ParseException e)
{
//...
}
Теперь я пытаюсь сделать то же самое в C#:
DateTimeFormatInfo dateTimeFormatInfo = new DateTimeFormatInfo();
dateTimeFormatInfo.FullDateTimePattern = format;
try
{
timeStamp = DateTime.Parse(line, dateTimeFormatInfo);
}
catch (FormatException ex)
{
//...
}
Оба языка работают пока я не добавлю случайный текст после отметки времени в строке. Java просто проигнорирует его, но C# не позволит ничего другого после текста метки времени в строке.
Так что Java хорошо разбирается "01/01/01 01: 01: 01,001 Hello World!" как временная метка, C# нет, потому что «Hello World!» не указывается в строке формата.
Однако, поскольку я не могу сделать какое-либо утверждение о том, что может произойти после метки времени внутри моих строк, я не могу включить его в строку формата.
Любые идеи?
Заранее спасибо.
Вы уверены, что формат даты всегда будет таким же, как в файле? Просто возьмите первые N символов строки и проанализируйте это. –
Я могу гарантировать, что формат даты будет таким же, да, но ваше решение не учитывает форматы даты, такие как «1 мая 2009 года». Длина может сильно различаться. – Callash
Не ответ на ваш вопрос, но если возможно, вы должны использовать 'DateTime.TryParse', а не' try ... DateTime.Parse ... catch'. http://msdn.microsoft.com/en-us/library/system.datetime.tryparse.aspx – LukeH