如何在python中查找上个月的连续7天的列表

时间:2019-05-09 13:27:40

标签: python datetime

我想用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)]

1 个答案:

答案 0 :(得分:0)

您可以使用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']