python – 根据星期几和当前日期查找星期一到星期日的日期

我目前正在为我的一台服务器开发一个不和谐机器人,为了使这部分工作,我需要它来提供当前日期和工作日的星期一到星期日的日期.如果可能的话,我想避免使用很多if语句.

我尝试过:我已经尝试使用if语句来完成这项任务,但只是发现它做了太多的工作,而且代码很乱.

当前代码的部分内容:

日期

time = ctx.message.timestamp
day = time.day
month = time.month
year = time.year
date = [year, month, day]

周日:

with open(dir_data + "Week Day.txt",'r+') as f:
    system_day = f.readline()

注意:工作日是数字形式. (例如星期一= 1)

最佳答案 您可以使用模块weekday()来了解星期几:

import datetime
datetime.datetime.today().weekday()

date.weekday()以整数形式返回星期几,其中星期一为0,星期日为6.例如,日期(2002,12,4).weekday()为2,表示它是星期三.

在您的情况下,您希望生成从星期一到星期日的日期,因此以下函数返回其键为星期几的字典,其值为与该日对应的日期可能有用:

import datetime

def generate_week_days(date):
    weekday = date.weekday()
    offset = [i - weekday for i in range(7)]
    days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
    dates = [(date + datetime.timedelta(days)).date() for days in offset] 

    return {days[date.weekday()]: date for date in dates}

例:

d = datetime.datetime.now()
print(generate_week_days(d))

这将打印:

{'Monday': datetime.date(2018, 7, 9),
 'Tuesday': datetime.date(2018, 7, 10),
 'Wednesday': datetime.date(2018, 7, 11),
 'Thursday': datetime.date(2018, 7, 12),
 'Friday': datetime.date(2018, 7, 13),
 'Saturday': datetime.date(2018, 7, 14),
 'Sunday': datetime.date(2018, 7, 15)}
点赞