如何从 Python 的 Datetime 对象中找到工作日名称?

How to find weekday name from the Python's Datetime object?

所以我刚开始学习 python 并尝试制作一个程序,告诉你某一天的日期。我发现了 datetime 并尝试使用它,但问题是即使密钥存在,我仍然收到密钥错误。

这是我的代码:

import datetime

def day_finder(dd,mm,yy):

    tags = { '1' : 'Monday' ,'2' : 'Tuesday' ,'3' : 'Wednesday' ,'4' : 'Thursday' ,'5' : 'Friday' ,'6' : 'Saturday' ,'7' : 'Sunday' }
    return tags[int(datetime.datetime(yy,mm,dd).isoweekday())]


d = int(input("Enter a date"))
m = int(input("Enter a month"))
y = int(input("Enter a year"))

print (day_finder(d,m,y))

您正在搜索 int 工作日编号,但您应该检查字符串,因为 字典 中的键是 str类型。例如:

>>> tags = { '1' : 'Monday' ,'2' : 'Tuesday' ,'3' : 'Wednesday' ,'4' : 'Thursday' ,'5' : 'Friday' ,'6' : 'Saturday' ,'7' : 'Sunday' }

>>> import datetime
>>> tags[str(datetime.datetime(1990,03,28).isoweekday())]
'Wednesday'

但是,您不需要 dict 对象即可根据关键日期编号获取工作日名称。您可以通过在 datetime 对象上使用 .strftime('%A') 来获得所需的结果:

>>> datetime.datetime(1990,03,28).strftime("%A")
'Wednesday'
tags 对象中的

keysstr 值,但是您将它们转换为 int(它们已经是),然后尝试通过 int 值,这就是为什么你得到 KeyError.

修复方法是将它们转换为 str,然后一切正常。

return tags[str(datetime.datetime(yy,mm,dd).isoweekday())]

isoweekday returns 一个整数。你字典的键是字符串。

您不需要对结果调用 int,因为它已经是一个整数 - 将其替换为 str,或者使用整数作为字典的键。

尝试查找字符串而不是整数。

return tags[str(datetime.datetime(yy,mm,dd).isoweekday())]