如何每 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
忘记所有 mktime
和 timetuple
的东西。如果使用 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)
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
忘记所有 mktime
和 timetuple
的东西。如果使用 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)