如何在python中使用datetime使用if命令检查工作日
我尝试了这一点,但在python中出现了错误:如何在python中使用datetime使用if命令检查工作日,python,python-3.x,python-datetime,Python,Python 3.x,Python Datetime,我尝试了这一点,但在python中出现了错误: import datetime now = datetime.datetime.now() if now.day == Tuesday : print ('yes it is tuesday') else : print ('no') 回溯(最近一次呼叫最后一次): 文件“C:/Users/Yarlagadda/Desktop/test2.py”,第4行,在 如果now.day==星期二: NameError:未定义名称“星期
import datetime
now = datetime.datetime.now()
if now.day == Tuesday :
print ('yes it is tuesday')
else :
print ('no')
回溯(最近一次呼叫最后一次):
文件“C:/Users/Yarlagadda/Desktop/test2.py”,第4行,在
如果now.day==星期二:
NameError:未定义名称“星期二”
>>>
我想知道你的代码有两个问题 首先,错误代码告诉您,
tuday
不作为变量存在,因为您没有将其设置为字符串。所以,将它改为“星期二”,并在其周围加上“”
第二个是返回一个数字,而不是字符串日
编辑:感谢@Tomerikoo指出它返回的是一个月中的某一天,而不是一周中的某一天。将此更改为获取一周中的某一天
要解决这个问题,您可以比较if
语句中的数字1而不是单词tuday,或者将数字映射到单词。将数字映射到单词是首选方法,因为它更容易维护,也不太混乱
注意:now.weekday()
中的一周天数将编号为0-6,其中0为周一,6为周日
我这里用的是元组,但是你可以用一个列表,或者如果你真的想用的话,也可以用字典。但是一个dict是多余的,一个列表会带来不需要的内存开销
映射:
week\u days=(“周一”、“周二”、“周三”、“周四”、“周五”、“周六”、“周日”)
最终代码
该错误仅在星期二未用作字符串的条件下出现。将星期二替换为
“星期二”
,您的代码工作正常
为了增强功能,您还可以使用列表或元组来保留工作日
import datetime
week_days = ("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday")
now = datetime.datetime.now()
day = week_days[now.weekday()] # Note the change to now.weekday()
if day == 'Tuesday' :
print ('yes it is tuesday')
else :
print ('no')
这回答了你的问题吗。您有一个方法可以将一周中的某一天作为整数返回。要获取工作日,您应该使用
datetime.datetime.today().weekday()
,它返回从0到6的数字。如果您不想使用另一个库,您可以创建一个包含英语工作日的元组,如工作日=(“星期一”、“星期二”、“星期三”、“星期四”、“星期五”、“星期六”、“星期日”)
,并作为工作日[datetime.datetime.today().weekday()]
访问它,虽然这解决了错误,但并不能解决问题。。。返回一个int,因此上面的代码将永远打印出“no”
…@Tomerikoo您完全正确。当我在本地测试时,我使用了datetime.weekday()
,只是没有注意到我在这里把它改成了.day
。我会更新代码。
import datetime
week_days = ("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday")
now = datetime.datetime.now()
day = week_days[now.weekday()] # Note the change to now.weekday()
if day == 'Tuesday' :
print ('yes it is tuesday')
else :
print ('no')
import datetime
now = datetime.datetime.now()
if now.day == 'Tuesday':
print ('yes it is tuesday')
else:
print ('no')