在python中如何在时间戳中迭代数小时
我试图迭代两个时间戳之间的小时数。例如:在python中如何在时间戳中迭代数小时,python,datetime,for-loop,Python,Datetime,For Loop,我试图迭代两个时间戳之间的小时数。例如: a = 2018-01-19 12:35:00 b = 2018-01-19 18:50:00 for hour in range(a.hour, b.hour +1): print(hour) 这将重新输入:12,13,14,15,16,17,18 稍后我想使用'hour'变量,所以我需要它来计算有多少小时的差异,而不是小时本身 我想要的结果是:0,1,2,3,4,5,6 在获取这样的时间戳时还有另一个问题: c = 2018-01-16
a = 2018-01-19 12:35:00
b = 2018-01-19 18:50:00
for hour in range(a.hour, b.hour +1):
print(hour)
这将重新输入:12,13,14,15,16,17,18
稍后我想使用'hour'变量,所以我需要它来计算有多少小时的差异,而不是小时本身
我想要的结果是:0,1,2,3,4,5,6
在获取这样的时间戳时还有另一个问题:
c = 2018-01-16 17:59:00
d = 2018-01-17 00:14:00
因为:00:14:00
中的小时数是0
在这种情况下,我想得到:0,1,2,3,4,5,6,7
我不知道怎么做。。有人能帮忙吗?您想要的对象是一个“timedelta”对象-它表示两个时间戳之间的持续时间。假设你想从一个日期对象开始,然后每隔一小时做一件事。不要试图自己找出间隔逻辑,使用内置的东西
>>> a = datetime.now()
>>> a
datetime.datetime(2020, 8, 17, 6, 33, 25, 529995)
>>> a + timedelta(hours=1)
datetime.datetime(2020, 8, 17, 7, 33, 25, 529995)
>>> a + timedelta(hours=1)
datetime.datetime(2020, 8, 17, 7, 33, 25, 529995)
>>> a + timedelta(hours=2)
datetime.datetime(2020, 8, 17, 8, 33, 25, 529995)
试试这个
from datetime import datetime
def date_range(x, y):
fmt = '%Y-%m-%d %H:%M:%S'
x, y = datetime.strptime(x, fmt), datetime.strptime(y, fmt)
duration = y.replace(minute=59) - x.replace(minute=0)
days, seconds = duration.days, duration.seconds
hours = days * 24 + seconds // 3600
return list(range(hours + 1))
a = '2018-01-19 12:35:00'
b = '2018-01-19 18:50:00'
c = '2018-01-16 17:59:00'
d = '2018-01-17 00:14:00'
print(date_range(a, b))
print(date_range(c, d))
输出:
[0, 1, 2, 3, 4, 5, 6]
[0, 1, 2, 3, 4, 5, 6, 7]
您要查找的单词/函数是
enumerate
。谢谢!但不幸的是,这只解决了我问题的第一部分。。。你能找到一种方法来帮助我在小时数为0时该怎么办?如果时间戳之间的时间差小于一小时,该怎么办?这已经得到了解决。。谢谢