Python 时间类,如何适当增加两个时间类

Python 时间类,如何适当增加两个时间类,python,Python,有没有人能帮我修改代码,或者告诉我一个更好的方法,这样我就可以简化代码了?提前谢谢 或者告诉我一个更好的方法 使用datetime。它提供您所需的一切: *Error: t+70 -> 12:01:11am but should -> 12:01:10am *Error: t+3600 -> 12:11:11am but should -> 1:00:00am *Error: t+86400 -> 12:11:11am but should -> 12:00:

有没有人能帮我修改代码,或者告诉我一个更好的方法,这样我就可以简化代码了?提前谢谢

或者告诉我一个更好的方法

使用
datetime
。它提供您所需的一切:

*Error: t+70 -> 12:01:11am but should -> 12:01:10am
*Error: t+3600 -> 12:11:11am but should -> 1:00:00am
*Error: t+86400 -> 12:11:11am but should -> 12:00:00am
*Error: t -> 12:11:11am but should -> 12:00:00am
*Error: Time(4,56,23)+500 -> 4:43:43am but should -> 5:04:43am
*Error: Time(23,58,6)+736 -> 11:22:22pm but should -> 12:10:22am
*Error: 1+t raised exception TypeError: unsupported operand type(s) for +: 'int' and 'Time'
*Error: 70+t raised exception TypeError: unsupported operand type(s) for +: 'int' and 'Time'
输出:

import datetime

start = datetime.datetime(2000, 1, 1, 12)
for second in [70, 3600, 86400]:
    date = start + datetime.timedelta(seconds=second)
    print(date.time())
如果您想拥有自己的类,可以在类中使用
datetime

12:01:10
13:00:00
12:00:00
试一试:

class Time(object):

    def __init__(self, hour=0, minute= 0, second=0):
        self._date = datetime.datetime(2000, 1, 1, hour, minute, second)

    @property
    def hour(self):
        return self._date.hour

    @property
    def minute(self):
        return self._date.minute

    @property
    def second(self):
        return self._date.second

    def __add__(self, other):
        time_ = (self._date + datetime.timedelta(seconds=int(other))).time()
        return Time(time_.hour, time_.minute, time_.second)

    def __radd__(self, other):
        return self.__add__(other)

如果self.minute>59:之后的代码使用的是
self.second
而不是
self.minute
。最后两个错误是因为
\uuuu sum\uuu
方法使用了
+
的左操作数类。因此,您的方法只适用于
time+int
,而不适用于
int+time
class Time(object):

    def __init__(self, hour=0, minute= 0, second=0):
        self._date = datetime.datetime(2000, 1, 1, hour, minute, second)

    @property
    def hour(self):
        return self._date.hour

    @property
    def minute(self):
        return self._date.minute

    @property
    def second(self):
        return self._date.second

    def __add__(self, other):
        time_ = (self._date + datetime.timedelta(seconds=int(other))).time()
        return Time(time_.hour, time_.minute, time_.second)

    def __radd__(self, other):
        return self.__add__(other)
>>> t = Time(12, 0, 0)
>>> t2 = t + 3600
>>> t2.hour
13
>>> t3 = 3600 + t
>>> t3.hour
13