首页 > 解决方案 > 如何在python中查找上个月连续7天的列表

问题描述

我想用 Python 编写一个程序来查找 Python 中上个月连续 7 天的列表,例如,如果今天是 2019-5-9,那么我的输出应该是从 2019-4-8 到 2019-4-2 的日期列表为此,我使用了 Python 的 datetime 模块。我编写了如下程序,但我不想以 datetime.date() 格式输出,而是 2019-4-8。你能告诉我怎么做吗?另外,提供其他时间复杂度较低和简单代码的建议。

from datetime import date, timedelta

current_date=date.today()
current_year=date.today().year
current_day=date.today().day-1
month_before=date.today().month-1
date_before=current_date.replace(current_year,month_before,current_day)
month_list=[date_before]
print(month_list)
for i in range(1,7):
    month_list.append(date_before-timedelta(days=i))
print (month_list)  

输出是

[datetime.date(2019, 4, 8)]
[datetime.date(2019, 4, 8), datetime.date(2019, 4, 7), datetime.date(2019, 4, 6), datetime.date(2019, 4, 5), datetime.date(2019, 4, 4), datetime.date(2019, 4, 3), datetime.date(2019, 4, 2)]

标签: pythondatetime

解决方案


您可以使用 strftime 格式化日期

from datetime import date, timedelta

current_date=date.today()
current_year=date.today().year
current_day=date.today().day-1
month_before=date.today().month-1
date_before=current_date.replace(current_year,month_before,current_day)
month_list=[date_before]
print(month_list)
month_list=[(date_before-timedelta(days=i)).strftime("%Y-%m-%d") for i in range(7)]
print(month_list)

或者你可以使用 pandas date_range 和 dateoffset。

import pandas as pd
date_list =  sorted(pd.date_range(pd.datetime.today() 
                                 - pd.DateOffset(months=1) 
                                 - pd.DateOffset(days=7) , 
                                  periods=7).tolist(), reverse=True)
print([dt.strftime("%Y-%m-%d") for dt in date_list])

结果:

['2019-04-08', '2019-04-07', '2019-04-06', '2019-04-05', '2019-04-04', '2019-04-03', '2019-04-02']

推荐阅读