wrpython 发表于 2019-10-4 22:50:53

请问如何对时间进行加减运算?

大家国庆好鸭~

我有个问题想要请教一下.

对于时间这样的字符串,有什么办法进行加减运算。

t1 = '14:32:01.236'
t2 = '14:32:35.547'
print(t2-t1)

我现在想到的办法是用split方法把时间分割成小时、分钟、秒然后全部统一成秒
tim1 = 3600*int(t1.split(':'))+ 60*int(t1.split(':'))+int(t1.split(':'))但是这样做感觉有点麻烦而且忽略了毫秒以下的时间,请问有没有什么模块或者工具能够直接对时间进行加减呢??
谢谢!

冬雪雪冬 发表于 2019-10-4 22:50:54

>>> import functools
>>> t1 = '14:32:01.236'
>>> functools.reduce(lambda x, y: 60 * float(x) + float(y), t1.split(':'))
52321.236

zltzlt 发表于 2019-10-5 08:14:49

可以用 datetime 模块。

import datetime as d
d1 = d.datetime.fromisoformat('2019-10-05 14:32:01.236')
d2 = d.datetime.fromisoformat('2019-10-05 14:32:35.547')
# microseconds 代表微秒,还可以是 second(秒)
print((d2 - d1).microseconds)

zltzlt 发表于 2019-10-5 14:44:15

@不二如是

wrpython 发表于 2019-10-18 17:41:44

冬雪雪冬 发表于 2019-10-5 00:12


感谢回复,不过我还没有学过functools这个模块,暂时还搞不懂怎么用~

wrpython 发表于 2019-10-18 17:44:40

zltzlt 发表于 2019-10-5 08:14
可以用 datetime 模块。

谢谢解答,因为我的原始数据里的时间都没有包含日期,并不是标准时间格式,直接用fromisoformat方法的话回提示错误ValueError: Invalid isoformat string: 14:32:01.236, 请问这种情况下应该怎么处理?

zltzlt 发表于 2019-10-18 18:19:02

wrpython 发表于 2019-10-18 17:44
谢谢解答,因为我的原始数据里的时间都没有包含日期,并不是标准时间格式,直接用fromisoformat方法的话 ...

随便加一个日期,例如:2019-10-18 14:32:01.236

wrpython 发表于 2019-10-18 21:24:45

zltzlt 发表于 2019-10-18 18:19
随便加一个日期,例如:2019-10-18 14:32:01.236

实际使用时原始数据是存放在另一个文件里的,我没有办法直接增加一个日期进去,只能读取出来以后再添加一个日期进去把数据改成标准格式~

wrpython 发表于 2019-10-18 21:26:22

冬雪雪冬 发表于 2019-10-5 00:12


我去查了一下,搞清了reduce的用法,好像还蛮好用的~谢谢解答
页: [1]
查看完整版本: 请问如何对时间进行加减运算?