如何每 3 小时迭代一次 for 循环,总共 7 天

how to iterate through for loop for every 3 hours and total of 7 days

from datetime import datetime as dt, date, timedelta
import time
startdate= dt.now()  - timedelta(days = 7)  
enddate= dt.now()  - timedelta(days = 1)
HourList=[0,3,6,9,12,15,18,21]
 for hour in HourList:
            timeFrom = int(time.mktime(dt(startdate.year, startdate.month, startdate.day, hour,0,0,1).timetuple()))   
            timeTo = int(time.mktime(dt(enddate.year, enddate.month, enddate.day, hour+2,59,59,999).timetuple()))

通过上面的代码,我可以循环 hours 。关于如何遍历日期的任何建议。 或按 n 天的总小时数。

Expected output:
    ---
first loop
timeFrom --march 01 2020 00:00:00
timeTo --march 01 2020 02:59:59
--second loop
timeFrom --march 01 2020 03:00:00
timeTo --march 01 2020 05:59:59
---third loop
timeFrom --march 01 2020 06:00:00
timeTo --march 01 2020 08:59:59
...
...
..
---lastloop
timeFrom --march 07 2020 21:00:00
timeTo --march 07 2020 23:59:59

忘记所有 mktimetimetuple 的东西。如果使用 datetime.replace()

,则可以坚持使用全 datetime 解决方案

像这样:

from datetime import datetime as dt, timedelta

now = dt.utcnow()
week_ago = now-timedelta(days=7)
startdate = week_ago.replace(hour=0,minute=0,second=0,microsecond=0)
enddate   = now.replace(hour=0,minute=0,second=0,microsecond=0)

start = startdate
while start < enddate:
    print(start)
    end =  start+timedelta(hours=2,minutes=59,seconds=59)
    print(end)
    print("---")
    start = start+timedelta(hours=3)