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

标签 python python-2.7 datetime

我有一组日期:

(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

解释

  1. 通过 timedelta.total_seconds() 转换为秒数。
  2. 然后除以 60**2 转换为小时数。
  3. 最后,包裹在 sum 中并使用生成器表达式。

关于python - 如何在 Python 中添加减去的日期值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49649393/

相关文章:

python - Matplotlib 更改条形之间的间隙并添加黑色轮廓

python - 将我自己的文件命名为与模块相同的名称后无法导入 Python 模块

python - 值错误: could not convert string to float: 'r'

python - 如何避免需要递归地使用正则表达式来删除字符串末尾的单词?

python - 删除 timedelta 对象中的天数

Python - 多线程帮助 - 读取多个文件 - ETL 到 SQL Server

python - pdb 中的 'n' 使我进入 pdb.set_trace() 方法

javascript - Angular2 第二天得到

javascript - 如何正确指定时区和日期对象格式,这样我就不会收到无效日期和不推荐使用的警告?

python - 如何在QTextEdit中自动滚动文本(动画效果)?