我有一组日期:
(u'x', datetime.datetime(2018, 1, 5, 4, 49, 30))
(u'y', datetime.datetime(2018, 1, 5, 9, 59, 10))
(u'x', datetime.datetime(2018, 1, 13, 10, 23, 17))
(u'y', datetime.datetime(2018, 1, 15, 17, 16, 34))
(u'x', datetime.datetime(2018, 1, 22, 11, 9, 55))
(u'y', datetime.datetime(2018, 1, 22, 14, 24, 59))
这是我减去日期的代码:
for x in range(len(y)):
if y[x][0] == 'x' and y[x+1][0] != 'y':
#subtract the date
print y[x+1][1] - y[x][1]
上面的代码打印如下:
5:09:40
2 days, 6:53:17
3:15:04
我的问题是如何将它们全部加起来并将它们转换为总小时数?感谢对此的帮助。
最佳答案
这是一种方式。
import datetime
lst = [(u'x', datetime.datetime(2018, 1, 5, 4, 49, 30)),
(u'y', datetime.datetime(2018, 1, 5, 9, 59, 10)),
(u'x', datetime.datetime(2018, 1, 13, 10, 23, 17)),
(u'y', datetime.datetime(2018, 1, 15, 17, 16, 34)),
(u'x', datetime.datetime(2018, 1, 22, 11, 9, 55)),
(u'y', datetime.datetime(2018, 1, 22, 14, 24, 59))]
res = sum((y[1]-x[1]).total_seconds()/(60**2) for x, y in zip(lst[::2], lst[1::2]))
# 63.30027777777778
解释
- 通过
timedelta.total_seconds()
转换为秒数。 - 然后除以 60**2 转换为小时数。
- 最后,包裹在
sum
中并使用生成器表达式。
关于python - 如何在 Python 中添加减去的日期值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49649393/