2010-04-01 2 views
37

У меня есть строка следующего формата "ORDER20100322194007", где 20100322 - это дата и 194007 - это время. Как разобрать строку и получить содержащийся объект DateTime?Разбор строки, содержащей дату и время в произвольном формате

+1

Это хороший вопрос. Возможно, вы должны изменить заголовок на что-то вроде «DateTime-анализ пользовательского формата даты в .NET». –

+0

ОК, я согласен с вами. – akrisanov

ответ

76

Всегда ли оно начинается с ORDER?

string pattern = "'ORDER'yyyyMMddHHmmss"; 
DateTime dt; 
if (DateTime.TryParseExact(text, pattern, CultureInfo.InvariantCulture, 
          DateTimeStyles.None, 
          out dt)) 
{ 
    // dt is the parsed value 
} 
else 
{ 
    // Invalid string 
} 

Если строка является недействительным должен бросить исключение, а затем использовать DateTime.ParseExact вместо DateTime.TryParseExact

Если это не всегда начинается с «ORDER», а затем делать все, что вам нужно для того, чтобы получить только дату и время, и удалите «ORDER» из шаблона формата выше.

8

Вы можете использовать метод DateTime.ParseExact, чтобы указать формат, который должен использоваться при разборе.

1

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

Смежные вопросы