Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.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中使用datetime使用if命令检查工作日_Python_Python 3.x_Python Datetime - Fatal编程技术网

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

如何在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:未定义名称“星期

我尝试了这一点,但在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:未定义名称“星期二”
>>> 

我想知道你的代码有两个问题

首先,错误代码告诉您,
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')