如何获取任何月份最后一周的日期

2024-10-04 09:29:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个场景,我想获取每个月最后一周的日期,并将其存储到设置中

例如:

让我们假设这2个参数作为输入:今天的月份是JUL,当前日期是date.today()

我的代码:

from datetime import date
from datetime import timedelta

def fetchLastWeekdate(month_name,current_date):
    today = date.today()

    for i in range(0,7):
        print (today - timedelta(days=i))

打印输出:

2021-07-25
2021-07-24
2021-07-23
2021-07-22
2021-07-21
2021-07-20
2021-07-19

预期输出:

但我需要以下预期输出->25,26,27,28,29,30,31作为集合

my_last_week_set  = {25,26,27,28,29,30,31}

Tags: 代码namefromimport参数todaydatetimedate
3条回答
import calendar as c
num_days = (c.monthrange(2021, 7)[1]) - 6
my_last_week_lst = [num_days + i for i in range(7)]
my_last_week_set = set(my_last_week_lst)
print(my_last_week_set)

我也试过,但方法有点不同,但效果很好

我的代码:

方法1

import time
import calendar

my_list = time.strftime("%Y,%m")
tdetails=my_list.split(',')

#Get last date of month 
lastdateofmonth=calendar._monthlen(int(tdetails[0]), int(tdetails[1]))

lastweekdates = [ lastdateofmonth-int(x) for x in range(0,7) ]
print(lastweekdates)

输出:

Output

方法2

如果要尝试其他月份,请从用户处获取年、月等值

yr=int(input('Input your year : '))
mth=int(input('Input your month : '))
lastdateofmonth=calendar._monthlen(yr, mth)
lastweekdates = [ lastdateofmonth-int(x) for x in range(0,7) ]
print(lastweekdates)

输出:

Output

方法3:使用map

import time
import calendar

year , month = map(int,time.strftime("%Y %m").split())
lastdateofmonth=calendar._monthlen(year, month)
lastweekdates = [ lastdateofmonth-int(x) for x in range(0,7) ]
print(lastweekdates)

输出:

Output

如果要对输出的最后一周日期进行排序,只需使用:sorted()

print(sorted(lastweekdates))

熊猫有一些很好的约会特征。在这里,我生成2021年一个月的所有最后一个星期日(如果一周从星期一开始,如在欧洲使用weekday=0):

import pandas as pd

last_sunday_of_month = list(
    pd.date_range(start="1/1/2021", end="1/1/2022", freq="M")
    - pd.offsets.Week(weekday=6)
)

然后打印每个月底的所有日期-此处为列表。要设置的转换将打乱订单:

for i in last_sunday_of_month:
    print(pd.date_range(i, i + pd.offsets.MonthEnd(1)).strftime("%d-%m").tolist())

输出:

['24-01', '25-01', '26-01', '27-01', '28-01', '29-01', '30-01', '31-01']
['21-02', '22-02', '23-02', '24-02', '25-02', '26-02', '27-02', '28-02']
['28-03', '29-03', '30-03', '31-03']
['25-04', '26-04', '27-04', '28-04', '29-04', '30-04']
['30-05', '31-05']
['27-06', '28-06', '29-06', '30-06']
['25-07', '26-07', '27-07', '28-07', '29-07', '30-07', '31-07']
['29-08', '30-08', '31-08']
['26-09', '27-09', '28-09', '29-09', '30-09']
['24-10', '25-10', '26-10', '27-10', '28-10', '29-10', '30-10', '31-10']
['28-11', '29-11', '30-11']
['26-12', '27-12', '28-12', '29-12', '30-12', '31-12']

解决方案包括最后一整周。一个月的最后一天是星期天,那么整个上星期都包括在内

相关问题 更多 >