Разобрать строку, содержащую дату и время в произвольном формате - PullRequest
43 голосов
/ 01 апреля 2010

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

Ответы [ 3 ]

86 голосов
/ 01 апреля 2010

Будет ли оно всегда начинаться с 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

Если он не всегда начинается с «ЗАКАЗАТЬ», то делайте все, что вам нужно, чтобы получить только часть даты и времени, и удалите «ЗАКАЗ» из шаблона формата выше.

9 голосов
/ 01 апреля 2010

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

1 голос
/ 01 апреля 2010

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

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