如何在Python中添加减去的日期值

2024-05-06 06:27:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一组日期:

(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

我的问题是如何将它们全部相加,并将它们转换为总小时数?感谢你在这方面的帮助。你知道吗


Tags: andthe代码infordatetimedatelen
1条回答
网友
1楼 · 发布于 2024-05-06 06:27:59

这是一种方法。你知道吗

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

解释

  1. 通过timedelta.total_seconds()转换为秒。你知道吗
  2. 然后除以60**2换算成小时。你知道吗
  3. 最后,用sum包装并使用生成器表达式。你知道吗

相关问题 更多 >