如何解决Python没有检测到两个值相等并一直返回false
抱歉,我真的不知道如何解释这一点。我正在尝试创建一个小程序来检测员工是否按时上班。 首先,我将一个浮点数(代表一个小时)转换为一个日期时间值:
estabHourF=(float(estabHour)+0.18)
minutes = estabHourF*60
hours,minutes = divmod(minutes,60)
print("%02d:%02d"%(hours,minutes))
todaysYear = datetime.date.today().year
todaysMonth = datetime.date.today().month
todaysDay =datetime.date.today().day
todaysSeconds = datetime.datetime.Now().second
然后,我将所有这些都插入到一个列表中:
NowH = datetime.datetime(todaysYear,todaysMonth,todaysDay,int("%02d"%(hours)),int("%02d"%(minutes)),todaysSeconds)
然后,我创建了另一个列表,该列表创建了类似的时间段,以便我可以将现在与既定的小时进行比较,以便稍后输入:
numMinutes = 15
date_list = [NowH - datetime.timedelta(minutes=x) for x in range(numMinutes)]
如果我打印这个,它是这样的:
datetime.datetime(2021,7,27,9,14,33)
这是它在控制台上的样子。
最后,我试图通过模仿它的样子来比较现在批准的时间列表:
for x in range(len(date_list)):
if (date_list[checkList])=="datetime.datetime({0},{1},{2},{3},{4},{5})".format(todaysYear,int(datetime.datetime.Now().strftime("%I")),datetime.datetime.Now().minute,todaysSeconds):
punctual = True
print("Puntual: ",punctual)
print(datetime.datetime.Now())
else:
print("datetime.datetime({0},todaysSeconds))
checkList+=1
是的,如果错误,我希望它显示我正在比较的相同值,而且,不要告诉我这两个不相同。
from my list: datetime.datetime(2021,25,49)
from the print inside "else": datetime.datetime(2021,49)
它们完全相同,但由于我的一些错误,python似乎无法识别它:')
如果你能帮助我,我真的很感激:'3
解决方法
打印时获得的 "datetime.datetime(2021,7,27,9,14,33)"
只是日期时间对象的字符串表示形式。 datetime 对象本身永远不等于该字符串。
您可以使用比较运算符直接比较两个日期时间。
我也不是 100% 确定您的 checklist
变量的用途,但在我看来您正在使用它来迭代 date_list
(我没有看到它在您的代码段中初始化尽管)。如果是这种情况,为什么不直接使用 x
甚至更好,您可以直接执行此操作:
for date in date_list:
if date == nowH:
#[...]
日期变量将依次直接从您的列表中获取所有值。
您可以定义“最新可接受的日期时间”
lateAfter = nowH + datetime.timedelta(minutes=numMinutes)
然后简单地使用比较运算符来代替您的日期:
if datetime.datetime.now() <= lateAfter:
punctual = True
print("Puntual: ",punctual)
print(datetime.datetime.now())
else: # Not punctual
print(datetime.datetime.now())
,
我是否正确理解不给您 True 的比较是这样的?
if (date_list[checkList])=="datetime.datetime({0},{1},{2},{3},{4},{5})".format(todaysYear,todaysMonth,todaysDay,int(datetime.datetime.now().strftime("%I")),datetime.datetime.now().minute,todaysSeconds):
抱歉,如果我没有任何意义(新手),但您不是将 str 与日期时间进行比较吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。