Я хочу достичь обратного этого, то есть хочу преобразовать string с форматом hh:mm tt в TimeSpan с нулевыми секундами.
Например, 09:45 pm преобразуется в 21:45:00.
Ответ 1
Простейший подход, вероятно, состоит в том, чтобы проанализировать его как DateTime с помощью DateTime.ParseExact, а затем использовать TimeOfDay, чтобы указать TimeSpan.
Нечетно видеть ведущее число 0 в течение нескольких часов, когда вы также указываете обозначение am/pm. Возможно, вам понадобится "h" вместо "hh" в строке формата, чтобы разрешить "21:45 pm" вместо "21:45 pm".
(Я также утверждаю, что это странное использование TimeSpan в первую очередь, но тогда типы даты и времени .NET несколько перепутаны в моем представлении. Я бы рекомендовал использовать Noda Time, но я предвзято:)