如何每3小时和总共7天迭代for循环

2024-05-14 18:36:27 发布

您现在位置:Python中文网/ 问答频道 /正文

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()))

通过上面的代码,我可以循环数小时。任何关于如何循环日期的建议。 或按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

Tags: importloopdatetimetimedtdaysnowtimedelta
1条回答
网友
1楼 · 发布于 2024-05-14 18:36:27

忘掉那些mktimetimetuple的东西。如果您使用datetime.replace(),您可以坚持使用alldatetime解决方案

像这样:

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)

相关问题 更多 >

    热门问题