Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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 添加天数并循环数周的日期_Python - Fatal编程技术网

Python 添加天数并循环数周的日期

Python 添加天数并循环数周的日期,python,Python,我这样做了 >>> d1 = datetime.date(2018, 7, 26) >>> d2 = datetime.date(2018, 10, 14) >>> dif = d2 - d1 >>> start_mon =(d1 - datetime.timedelta(days=d1.weekday())) >>> num_of_weeks = math.ceil((d2 - start_mon).da

我这样做了

>>> d1 = datetime.date(2018, 7, 26)
>>> d2 = datetime.date(2018, 10, 14)
>>> dif = d2 - d1
>>> start_mon =(d1 - datetime.timedelta(days=d1.weekday()))
>>> num_of_weeks = math.ceil((d2 - start_mon).days / 7.0)
>>> num_of_weeks
12
>>>xp = [d1 + datetime.timedelta(i) for i in range( math.ceil((D2 - start_mon).days / 7.0))]
>>> [datetime.date(2018, 7, 26), datetime.date(2018, 7, 27), datetime.date(2018, 7, 28), datetime.date(2018, 7, 29), datetime.date(2018, 7, 30), datetime.date(2018, 7, 31), datetime.date(2018, 8, 1), datetime.date(2018, 8, 2), datetime.date(2018, 8, 3), datetime.date(2018, 8, 4), datetime.date(2018, 8, 5), datetime.date(2018, 8, 6)]
我希望python给我12周之间的工作日。因此,由于开始日期是2018-07-26,下一个日期应该是2018-08-02,下一个日期也应该是2018-07-09,直到2018-10-11结束。如果算上12周

e、 g


我遗漏了什么?

你可以使用
while
循环,每次循环增加7天

xp = [d1]
while (d2 - d1).days > 7:
    d1 += datetime.timedelta(7)
    xp.append(d1)
就地添加在这种情况下起作用,因为
datetime
对象是不可变的。

这里是另一个尝试:

import datetime

d1 = datetime.date(2018, 7, 26)
d2 = datetime.date(2018, 10, 14)

days = d1
while days < d2:
    print(days)
    days += datetime.timedelta(7)
导入日期时间
d1=日期时间日期(2018年7月26日)
d2=日期时间日期(2018年10月14日)
天数=d1
而
我也使用了这个函数

>>> def next_days(st_date, end_date):
    if st_date <= end_date:
        print (st_date.strftime("%Y-%m-%d"))
        next_date = st_date + timedelta(days=7)
        next_days(next_date, end_date)


>>> st_date = datetime.date(2018, 7, 26)
>>> end_date = datetime.date(2018, 10, 14)
>>> next_days(st_date, end_date)
>>>定义下一天(开始日期、结束日期):
如果st_日期>>st_日期=日期时间。日期(2018年7月26日)
>>>结束日期=日期时间日期(2018年10月14日)
>>>下一天(开始日期、结束日期)

)

所以你只想要这12个日期中的工作日?是的。只需在开始日期前加上7天,到12天时停止。像这样2018-07-26 2018-08-02 2018-08-09 2018-08-16 2018-08-23 2018-08-30 2018-09-06 2018-09-13 2018-09-20 2018-09-27 2018-10-04 2018-10-11谢谢!不能投票。但你的解决方案是有效的。谢谢
>>> def next_days(st_date, end_date):
    if st_date <= end_date:
        print (st_date.strftime("%Y-%m-%d"))
        next_date = st_date + timedelta(days=7)
        next_days(next_date, end_date)


>>> st_date = datetime.date(2018, 7, 26)
>>> end_date = datetime.date(2018, 10, 14)
>>> next_days(st_date, end_date)