我目前正在为我的一台服务器开发一个不和谐机器人,为了使这部分工作,我需要它来提供当前日期和工作日的星期一到星期日的日期.如果可能的话,我想避免使用很多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)}