首页 > 解决方案 > Python - 尝试从输入中减去时间(不支持的操作数类型)

问题描述

我正在尝试从网站输入的值中减去 2 分钟:我一直收到错误消息:第 35 行,在实际时间延迟时间 = set_alarm_timer - timedelta(minutes = 2) 类型错误:不支持的操作数类型为 -: 'str ' 和 'datetime.timedelta'

代码是:

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
from selenium.common.exceptions import *
driver=webdriver.Edge(executable_path='C:\Python27amd64\msedgedriver')
vars = {}
from tkinter import *
import datetime
from datetime import timedelta

def actual_time():
    global set_alarm_timer
    global delay_time
    set_alarm_timer = f"{hour.get()}:{min.get()}:{sec.get()}"
    delay_time = set_alarm_timer - timedelta(minutes = 2)
alarm()

clock = Tk()
clock.title("Canyon Oaks CC Start Reservation Clock")
clock.geometry("400x200")
time_format=Label(clock, text= "Enter time in 24 hour format!", 
fg="red",bg="black",font="Arial").place(x=60,y=120)
addTime = Label(clock,text = "Hour  Min   Sec",font=60).place(x = 110)
setYourAlarm = Label(clock,text = "When to start Reservation",fg="blue",relief = "solid",font= ("Helevetica",7,"bold")).place(x=0, y=29)

hour = StringVar()
min = StringVar()
sec = StringVar()

hourTime= Entry(clock,textvariable = hour,bg = "pink",width = 15).place(x=110,y=30)
minTime= Entry(clock,textvariable = min,bg = "pink",width = 15).place(x=150,y=30)
secTime = Entry(clock,textvariable = sec,bg = "pink",width = 15).place(x=200,y=30)

submit = Button(clock,text = "Set Alarm",fg="red",width = 10,command = actual_time).place(x =110,y=70)

clock.mainloop() 

标签: python

解决方案


    set_alarm_timer = f"{hour.get()}:{min.get()}:{sec.get()}"
    delay_time = set_alarm_timer - timedelta(minutes = 2)

你设置set_alarm_timer为一个字符串。你从字符串中减去一个 timedelta。错误消息准确地告诉您:“不能将运算符-与类型str和 `typedelta 一起使用”。你期望会发生什么?

相反,只需timedelta使用来自hourmin和的值sec而不是字符串来创建另一个:

    set_alarm_timer = timedelta(hours=hour.get(), minutes=min.get(), seconds=sec.get())
    delay_time = set_alarm_timer - timedelta(minutes = 2)

推荐阅读