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

Python 查找星期一到星期日的日期(给定星期天)和当前日期

Python 查找星期一到星期日的日期(给定星期天)和当前日期,python,python-3.x,Python,Python 3.x,我目前正在为我的一台服务器开发一个discord bot,为了让这一部分正常工作,我需要它在给定当前日期和工作日的情况下调出周一到周日的日期。如果可能的话,我想避免使用很多if语句 我尝试过的:我尝试过使用if语句来完成这项任务,但只是发现它做了太多的工作,而且代码凌乱 当前代码的部分: 日期 工作日: 注意:周日以数字的形式出现。(例如,星期一=1)您可以使用模块weekday()了解一周中的哪一天: import datetime datetime.datetime.today().week

我目前正在为我的一台服务器开发一个discord bot,为了让这一部分正常工作,我需要它在给定当前日期和工作日的情况下调出周一到周日的日期。如果可能的话,我想避免使用很多if语句

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

当前代码的部分:

日期

工作日:


注意:周日以数字的形式出现。(例如,星期一=1)

您可以使用模块
weekday()
了解一周中的哪一天:

import datetime
datetime.datetime.today().weekday()
date.weekday()
以整数形式返回一周中的某一天,其中周一为0,周日为6。例如,
date(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)}

你可以发现工作日是这样的:哦,我不知道。谢谢你提供的信息,我以后会用它来改进我的代码。但是我想要的是星期一到星期天的日期,而不是当前日期。有没有办法将它们返回为星期一=、星期二=,等等?@John.B,你是什么意思?作为字典?我想让它生成周一到周五的日期sunday@John.B,我是否已再次更新我的答案?这就是你要找的吗?如果没有,您介意提供一个输入输出示例吗?
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)}