2013-05-09 62 views
0

我正在尝试创建一个Time-类,它可以处理格式为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。 但事情是,我想用消极的时间格式工作,我只是不知道如何。

负时间值应该如何表现? 他们甚至有可能实现与我的二传手? 我真的无法开始,我不需要你为我编码,但至少给一些提示,并解释消极时间的工作原理。

+0

在设置'self.hours'等时没有**点,因为具有相同名称的'@ property'描述符将被用来代替* anyway *。 – 2013-05-09 15:06:41

+3

我认为你是一个绝对时间*时间*增量*令人困惑。这是一个模拟绝对时间的课程,是一天的时间。时间三角洲模型的相对时间,这可能是负面的。仔细看看'datetime'模块。 – 2013-05-09 15:07:43

回答

1

有2个概念时间:

  • 在时间(时刻)的力矩
  • 两个时刻(时间跨度或时间增量)之间的长度。

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

使用相同的单位来描述一段时间,理解为某个参考时间(如0 BC或Unix时期)之间的时间跨度。 (虽然这些单位比较复杂,但是我们使用的是日历,它们分配了像“7月16日”这样的好名字,并且在特定时刻)。


所以:

  • 时间跨度还是可以肯定是负的(作为一个整体)
  • 瞬间可以为负也因为有一个时间跨度内(如BC年-3000),但实际格式没有负面系数(说“14:-3”或“6月5日”没有意义)。

所以:

  • 上的即时设定minutes至负面,应该是一个ValueError
  • 有可能是一个方法.later(minutes=10)那将等同于.earlier(minutes=-10)