如何使用datetime在python中使用if命令检查工作日

问题描述

import datetime

Now = datetime.datetime.Now()
if Now.day == Tuesday :
    print ('yes it is tuesday')
else :
     print ('no')

我尝试这样做,但是在python中出现错误

Traceback (most recent call last):
  File "C:/Users/Yarlagadda/Desktop/test2.py",line 4,in <module>
    if Now.day == Tuesday :
  NameError: name 'Tuesday' is not defined
  >>> 

我想知道错误

解决方法

您的代码有两个问题。

第一个是错误代码告诉您Tuesday不作为变量存在,因为您没有将其设为字符串。因此,将其周围的'Tuesday'更改为'

第二个原因是now.day将返回一个数字而不是一个字符串日。

编辑:感谢@Tomerikoo指出此操作返回的是月中的某天,而不是星期几。将其更改为now.weekday(),以获取星期几。

要解决此问题,您可以比较if语句中的数字1而不是单词Tuesday,也可以将数字映射到单词。将数字映射到单词是首选方法,因为它更易于维护且不那么混乱。

注意: now.weekday()中的星期几将被编号为0-6,其中0为星期一,6为星期日。

我在这里使用一个元组,但是您可以使用一个列表,或者如果您真的很喜欢,可以使用字典。但是,字典是一种矫kill过正,并且列表附带了不需要的内存开销。

映射:

week_days = ("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday")

最终密码

import datetime

week_days = ("Monday","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')
,

如果条件是星期二不用作字符串,则会出现错误。将周二替换为'Tuesday',您的代码可以正常工作。

为了增强功能,您还可以使用列表或元组保留工作日。

import datetime
now = datetime.datetime.now()

if now.day == 'Tuesday':
   print ('yes it is tuesday')
else:
   print ('no')