Python 将datetime.time四舍五入到最近的60分钟标记时出错

Python 将datetime.time四舍五入到最近的60分钟标记时出错,python,datetime,Python,Datetime,我有这个python代码,我在那里得到current time。现在我想把它四舍五入到最近的60分钟标记,这样如果8:20那么它四舍五入到8:00,但是如果它的8:31那么它应该四舍五入到9:00。基于此,我尝试了这个,但它给了我错误: def roundTime(dt=None, roundTo=60): """Round a datetime object to any time laps in seconds dt : datetime.datet

我有这个
python
代码,我在那里得到
current time
。现在我想把它四舍五入到最近的
60
分钟标记,这样如果
8:20
那么它四舍五入到
8:00
,但是如果它的
8:31
那么它应该四舍五入到
9:00
。基于此,我尝试了这个,但它给了我错误:

def roundTime(dt=None, roundTo=60):
   """Round a datetime object to any time laps in seconds
   dt : datetime.datetime object, default now.
   roundTo : Closest number of seconds to round to, default 1 minute.
   Author: Thierry Husson 2012 - Use it as you want but don't blame me.
   """
   if dt == None : dt = datetime.datetime.now()
   seconds = (dt.replace(tzinfo=None) - dt.min).seconds
   rounding = (seconds+roundTo/2) // roundTo * roundTo
   return dt + datetime.timedelta(0,rounding-seconds,-dt.microsecond)

def round_time():
    td = datetime.datetime.time(datetime.datetime.now())
    print(roundTime(td, roundTo=60 * 60))
我得到的错误是
TypeError:-:'datetime.time'和'datetime.time'的操作数类型不受支持。
。如何解决这个错误和时间循环?另外,如果有更简单的方法来实现这一点,请让我知道


其他相关问题:一旦我将时间四舍五入,我还想找出四舍五入时间后3小时的时间。
+
操作在这里起作用吗?

round\u time()函数中取出
datetime.datetime.time
,它起作用:

def round_time():
    td = datetime.datetime.now()
    res = roundTime(td, roundTo=60 * 60).time()
    print(res)
如果您还需要3小时,可以使用
timedelta

def round_time():
    td = datetime.datetime.now() + datetime.timedelta(hours=3) // plus 3 more hours
    res = roundTime(td, roundTo=60 * 60).time()
    print(res)
顺便说一下,在
roundTime(dt=None,roundTo=60)
中,您应该更改为下面的代码,这样当您不发送
dt
时,您将得到当前小时的正确答案:

def roudTime(dt=None, roundTo = 60*60):

round\u time()
函数中取出
datetime.datetime.time

def round_time():
    td = datetime.datetime.now()
    res = roundTime(td, roundTo=60 * 60).time()
    print(res)
如果您还需要3小时,可以使用
timedelta

def round_time():
    td = datetime.datetime.now() + datetime.timedelta(hours=3) // plus 3 more hours
    res = roundTime(td, roundTo=60 * 60).time()
    print(res)
顺便说一下,在
roundTime(dt=None,roundTo=60)
中,您应该更改为下面的代码,这样当您不发送
dt
时,您将得到当前小时的正确答案:

def roudTime(dt=None, roundTo = 60*60):

如函数注释中所述:
dt
变量必须是
datetime.datetime
对象(而不是
datetime.time
对象)


如函数注释中所述:
dt
变量必须是
datetime.datetime
对象(而不是
datetime.time
对象)