AM/PM для TimeSpan - программирование

AM/PM для TimeSpan

Я хочу достичь обратного этого, то есть хочу преобразовать string с форматом hh:mm tt в TimeSpan с нулевыми секундами.

Например, 09:45 pm преобразуется в 21:45:00.

4b9b3361

Ответ 1

Простейший подход, вероятно, состоит в том, чтобы проанализировать его как DateTime с помощью DateTime.ParseExact, а затем использовать TimeOfDay, чтобы указать TimeSpan.

DateTime dateTime = DateTime.ParseExact(text,
                                    "hh:mm tt", CultureInfo.InvariantCulture);
TimeSpan span = dateTime.TimeOfDay;

Нечетно видеть ведущее число 0 в течение нескольких часов, когда вы также указываете обозначение am/pm. Возможно, вам понадобится "h" вместо "hh" в строке формата, чтобы разрешить "21:45 pm" вместо "21:45 pm".

(Я также утверждаю, что это странное использование TimeSpan в первую очередь, но тогда типы даты и времени .NET несколько перепутаны в моем представлении. Я бы рекомендовал использовать Noda Time, но я предвзято:)

Ответ 2

Эта работа для меня.

TimeSpan ts= DateTime.Parse("8:00 PM").TimeOfDay; 

Ответ 3

TimeSpan tspan;

tspan = DateTime.ParseExact("01:45 PM", "hh:mm tt", CultureInfo.InvariantCulture).TimeOfDay;