Хотя правильно, что это будет работать:
TimeSpan time = TimeSpan.Parse("07:35");
И если вы используете его для проверки ...
TimeSpan time;
if (!TimeSpan.TryParse("07:35", out time))
{
// handle validation error
}
Учтите, что TimeSpan
в первую очередь предназначен для работы с прошедшим временем, а не с временем дня. Он принимает значения, превышающие 24 часа, а также отрицательные значения.
Если вам нужно убедиться, что входная строка является действительным временем дня (> = 00:00 и ‹24:00), вам следует подумать об этом:
DateTime dt;
if (!DateTime.TryParseExact("07:35", "HH:mm", CultureInfo.InvariantCulture,
DateTimeStyles.None, out dt))
{
// handle validation error
}
TimeSpan time = dt.TimeOfDay;
В качестве дополнительного преимущества это также будет анализировать 12-часовое форматирование времени, когда включены AM или PM, если вы предоставите соответствующую строку формата, например "h:mm tt"
.
30.06.2014
DateTime.TryParse
довольно медленно,DateTime.TryParseExact
на много миль быстрее. Насколько я понимаю,TryParse
пробует набор шаблонов, чтобы увидеть, совпадают ли они, если формат, который вам нужен, находится в конце этого списка, это существенные накладные расходы, которых легко избежать. 30.06.2014TimeSpan
может представлять ›= 24 часа, но в виде строки он обрабатывает их как дни. Итак,ParseExact
и т. Д. Не могут их проанализировать. Было бы неплохо, если бы для этого был какой-то другой токен, но, увы, его нет. Вместо этого можно анализировать такие строки вручную, например, как показано в этом ответе. 16.08.2018