Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.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_Python 3.x_Python 2.7 - Fatal编程技术网

Python-在前一周的同一天遍历

Python-在前一周的同一天遍历,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,我是python新手,我有以下用例: 请参阅以下日历: 今天的日期是2018年9月12日。 我想在其他条件下对前一天进行一些计算。 我使用以下代码检索了昨天的日期: yesterday_date = datetime.strftime(datetime.now() - timedelta(1), '%Y-%m-%d') yesterday_day = datetime.strftime(datetime.now() - timedelta(1), '%A') 现在我想在前一周的同一天进行一些

我是python新手,我有以下用例:

请参阅以下日历:

今天的日期是2018年9月12日。 我想在其他条件下对前一天进行一些计算。 我使用以下代码检索了昨天的日期:

yesterday_date = datetime.strftime(datetime.now() - timedelta(1), '%Y-%m-%d')
yesterday_day = datetime.strftime(datetime.now() - timedelta(1), '%A')
现在我想在前一周的同一天进行一些计算。例如:我想得到前一周同一天的日期 (星期二)。因此,基本上我想连续迭代前一周的日期,与我昨天的日期相同,并执行一些计算

Yesterday Date : 2018-09-11

Yesterday Day : Tuesday
所以我的输出应该是:

2018-09-04
2018-08-28
2018-08-21
2018-08-14
2018-08-07
等等


如何实现这一点?

这可以通过while循环和使用
timedelta(days=days\u to\u减法)


这可以通过while循环和使用
timedelta(days=days-to-subtract)


假设您希望打印昨天日期的最后5个实例:

yesterday = datetime.now() - timedelta(days=1)
for i in range(0, 5):
    prev_date = yesterday - timedelta(days=i*7)
    print(datetime.strftime(prev_date, '%Y-%m-%d'))
或者,如果需要datetime对象的列表:

yesterday = datetime.now() - timedelta(days=1)
prev_dates = [yesterday - timedelta(days=i*7) for i in range(0, 5)]

假设您希望打印昨天日期的最后5个实例:

yesterday = datetime.now() - timedelta(days=1)
for i in range(0, 5):
    prev_date = yesterday - timedelta(days=i*7)
    print(datetime.strftime(prev_date, '%Y-%m-%d'))
或者,如果需要datetime对象的列表:

yesterday = datetime.now() - timedelta(days=1)
prev_dates = [yesterday - timedelta(days=i*7) for i in range(0, 5)]

尝试循环并使用临时变量:

from datetime import datetime, timedelta
yesterday_date = datetime.strftime(datetime.now() - timedelta(1), '%Y-%m-%d')
yesterday_day = datetime.strftime(datetime.now() - timedelta(1), '%A')
date_temp = datetime.now() - timedelta(1)
for i in range(5):
    yesterday_date = datetime.strftime(date_temp - timedelta(7), '%Y-%m-%d')
    yesterday_day = datetime.strftime(date_temp - timedelta(7), '%A')
    date_temp = date_temp - timedelta(7)
    print(yesterday_date, yesterday_day, date_temp)
输出:

2018-09-04 Tuesday 2018-09-04 17:04:43.470056
2018-08-28 Tuesday 2018-08-28 17:04:43.470056
2018-08-21 Tuesday 2018-08-21 17:04:43.470056
2018-08-14 Tuesday 2018-08-14 17:04:43.470056
2018-08-07 Tuesday 2018-08-07 17:04:43.470056

尝试循环并使用临时变量:

from datetime import datetime, timedelta
yesterday_date = datetime.strftime(datetime.now() - timedelta(1), '%Y-%m-%d')
yesterday_day = datetime.strftime(datetime.now() - timedelta(1), '%A')
date_temp = datetime.now() - timedelta(1)
for i in range(5):
    yesterday_date = datetime.strftime(date_temp - timedelta(7), '%Y-%m-%d')
    yesterday_day = datetime.strftime(date_temp - timedelta(7), '%A')
    date_temp = date_temp - timedelta(7)
    print(yesterday_date, yesterday_day, date_temp)
输出:

2018-09-04 Tuesday 2018-09-04 17:04:43.470056
2018-08-28 Tuesday 2018-08-28 17:04:43.470056
2018-08-21 Tuesday 2018-08-21 17:04:43.470056
2018-08-14 Tuesday 2018-08-14 17:04:43.470056
2018-08-07 Tuesday 2018-08-07 17:04:43.470056

日期-=时间差(天=7)?然后在循环中重复。将
timedelta(1)
更改为某个变量值怎么样?日期-=timedelta(天=7)?然后在循环中重复。将
timedelta(1)
更改为某个变量值怎么样?1。您不需要在循环之外进行额外的计算。2.Python中的注释不是这样的。3.这个循环将永远迭代。@MadPhysician你完全正确。我已经编辑了答案。您不需要在循环之外进行额外的计算。2.Python中的注释不是这样的。3.这个循环将永远迭代。@MadPhysician你完全正确。我已经编辑了答案。