Разбор c# TimeSpan без дней и часов - PullRequest
0 голосов
/ 29 января 2020

У меня есть строка временного промежутка, подобная этой: 20 min 49 sec Я хотел бы проанализировать его TimeSpan экземпляр, однако у меня плохое время с ним.

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

1 Ответ

3 голосов
/ 29 января 2020

Чтобы проанализировать эту точную строку, вы должны использовать это выражение:

TimeSpan.ParseExact(input, @"%m' min '%s' sec'", CultureInfo.InvariantCulture)

По сути, вы обрабатываете любой текст, кроме тех, где цифры литеральные разделители, указанные с использованием синтаксиса 'xxx'.

Если вы считаете, что вам может понадобиться обрабатывать как min и mins, так и sec и secs, вам необходимо использовать перегрузку с несколькими форматами:

string[] formats = new[]
{
    "%m' min '%s' sec'",
    "%m' mins '%s' sec'",
    "%m' min '%s' secs'",
    "%m' mins '%s' secs'"
};
TimeSpan.ParseExact(input, formats, CultureInfo.InvariantCulture)

И вопреки тому, что, по вашему мнению, указано в документации, вам не нужно указывать дни или часы вообще, это совершенно законно:

TimeSpan ts = TimeSpan.FromMilliseconds(45);
...