您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python-产生时差

Python-产生时差

我想这就是你想要的。它遍历列表,计算每个条目与上一个条目之间的差异。如果差异大于或等于30分钟,它将忽略它。如果少于30分钟,则会将其添加到该用户的总使用量中。(我假设所有时间戳都是针对同一用户的。)

from datetime import datetime,timedelta

# Convert the timestamps to datetime objects
usetimes = sorted(datetime.strptime(d, '%Y-%m-%d %H:%M:%s') for d in timestamp)

# Set the idle time to compare with later
idletime = timedelta(minutes = 30)

# Start the running total with a timedelta of 0
usage = timedelta()
last = usetimes[0]

for d in usetimes[1:]:
    delta = d - last
    if delta < idletime:
        usage += delta
    last = d

print "total usage:",usage

如果您想使用sum()并且zip()可以减少代码行,但是我不确定它是否可读:

from datetime import datetime,timedelta
usetimes = sorted(datetime.strptime(d, '%Y-%m-%d %H:%M:%s') for d in timestamp)
idletime = timedelta(minutes = 30)
usage = sum((x - y for x,y in zip(usetimes[1:],usetimes[:-1]) if x - y < idletime),timedelta())
print "total usage:", usage

在这种情况下,如果时间戳列表很长,您可以考虑使用izipfromitertools代替zip

python 2022/1/1 18:33:22 有217人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶