Преобразование строки в объект datetime.time

Учитывая string в этом формате "HH:MM", например "03:55", это соответствует 3 часам и 55 минутам.

Я хочу преобразовать его в объект datetime.time для упрощения манипуляций. Какой самый простой способ сделать это?


person Zed    schedule 12.01.2013    source источник


Ответы (3)


Используйте datetime.datetime.strptime() и вызовите .time() на результат:

>>> datetime.datetime.strptime('03:55', '%H:%M').time()
datetime.time(3, 55)

Первый аргумент .strptime() — это строка для анализа, второй — ожидаемый формат.

person Martijn Pieters    schedule 12.01.2013

Возможно, будущим читателям это будет менее понятно, но метод *map более чем в 10 раз быстрее. См. ниже и примите обоснованное решение в своем коде. Если вы вызываете эту проверку много раз и скорость имеет значение, используйте генератор (карту).

In [31]: timeit(datetime.strptime('15:00', '%H:%M').time())
7.76 µs ± 111 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)


In [28]: timeit(dtime(*map(int, SHUTDOWN_AT.split(':'))))
696 ns ± 11.5 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
person Gil Ben-Herut    schedule 09.02.2021
comment
Карта уже была предложена в предыдущем посте. - person Ruli; 09.02.2021

person    schedule
comment
Хотя это точно работает, я нахожу его менее неясным для чтения по сравнению с решением, использующим datetime.strptime(). - person viam0Zah; 03.01.2021