0

我正在尝试创建一个Time可以处理格式时间的 -class hh:mm:ss。这就是我所拥有的:

class Time(object):

    def __init__(self, h=0, m=0, s=0):
        #private
        self.__hours = 0
        self.__minutes = 0
        self.__seconds = 0

        #public
        self.hours = h
        self.minutes = m
        self.seconds = s

    @property
    def hours(self):
        return self.__hours

    @hours.setter
    def hours(self, value):
        if value < 0:
            raise ValueError
        self.__hours = value

    @property
    def minutes(self):
        return self.__minutes

    @minutes.setter
    def minutes(self, value):
        if value < 0:
            raise ValueError
        self.hours += int(value / 60)
        self.__minutes = value % 60

    @property
    def seconds(self):
        return self.__seconds

    @seconds.setter
    def seconds(self, value):
        if value < 0:
            raise ValueError
        self.minutes += int(value / 60)
        self.__seconds = value % 60

我遇到了负时间值的问题。我所做的是检查时间值(例如minutes)是否设置为负数,ValueError如果是,则提高 a。但问题是,我也想使用负时间格式,我只是不确定如何。

负时间值应该如何表现?他们甚至可以用我的二传手来实现吗?我什至无法开始,我不需要你为我编写代码,但至少给出一些提示并解释负时间是如何工作的。

4

1 回答 1

1

时间有两个概念:

  • 片刻(瞬间)
  • 两个瞬间之间的长度(时间跨度或时间增量)。

我们以秒和秒的倍数为单位测量时间跨度。

使用相同的单位来描述时刻,理解为某个参考时间(如 0 BC 或 Unix 纪元)之间的时间跨度。(不过,单位更复杂——我们使用日历来为特定时间分配好名称,例如“7 月 16 日”,而不是常规的秒数倍数)。


所以:

  • 时间跨度或当然可以是负数(作为一个整体)
  • 瞬间也可以是负数,因为里面有一个时间跨度(比如公元前 -3000 年),但实际格式没有负系数(说“14:-3”或“6 月 -5 日”是没有意义的) .

所以:

  • 立即设置minutes为负数,应该是ValueError
  • 可能有一种方法.later(minutes=10)相当于.earlier(minutes=-10).
于 2013-05-09T15:11:37.927 回答