Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何每3小时和总共7天迭代for循环_Python_Python 2.7_Python Datetime - Fatal编程技术网

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

Python 如何每3小时和总共7天迭代for循环,python,python-2.7,python-datetime,Python,Python 2.7,Python Datetime,通过上面的代码,我可以循环数小时。任何关于如何循环日期的建议。 或按n天的总小时数计算 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:

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

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

忘掉那些
mktime
timetuple
的东西。如果使用
datetime.replace()

像这样:

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
从datetime导入datetime作为dt,timedelta
现在=dt.utcnow()
周前=现在时间增量(天=7)
开始日期=一周前。替换(小时=0,分钟=0,秒=0,微秒=0)
enddate=now.replace(小时=0,分钟=0,秒=0,微秒=0)
开始=开始日期
开始<结束日期:
打印(开始)
结束=开始+时间增量(小时=2,分钟=59,秒=59)
列印(完)
打印(“--”)
开始=开始+时间增量(小时=3)

您可以使用schedular包,也可以只使用crontab
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)