将字符串转换为datetime.time对象。

103

给定一个格式为"HH:MM",例如"03:55"的字符串,表示3小时55分钟

我想将其转换为datetime.time对象以便更轻松地进行操作。最简单的方法是什么?

4个回答

161

使用datetime.datetime.strptime(),并在结果上调用.time()

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

.strptime() 的第一个参数是要解析的字符串,第二个参数是期望的格式。


我遇到了一个问题,当使用这种方法时,strptime会假定一个日期。 - user4933
@user4933:strptime() 不会做任何假设。它不会猜测,也没有启发式算法。它只能解析与您提供的确切格式匹配的字符串。如果您遇到意外输出,需要修复方法调用的使用方式。 - Martijn Pieters

20
>>> datetime.time(*map(int, '03:55'.split(':')))
datetime.time(3, 55)

2

也许对于未来的读者来说不太清楚,但是*map方法要快10倍以上。请参考下面的内容,在您的代码中做出明智的决策。如果需要多次调用此检查并且速度很重要,请选择生成器(“map”)。

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)

0

只需将其作为 iso 加载:

>>> from datetime import time
>>> time.fromisoformat("03:55")
datetime.time(3, 55)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接