Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 负时间应该如何工作?_Python_Time_Python 3.x_Negative Number - Fatal编程技术网

Python 负时间应该如何工作?

Python 负时间应该如何工作?,python,time,python-3.x,negative-number,Python,Time,Python 3.x,Negative Number,我正在尝试创建一个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

我正在尝试创建一个
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
上课时间(对象):
定义初始化(self,h=0,m=0,s=0):
#私人的
自身工作时间=0
自身。_分钟=0
self.\uu秒=0
#公开的
self.hours=h
self.minutes=m
self.seconds=s
@财产
def小时数(自我):
返回自我。\u小时
@塞特先生
def小时数(自身、数值):
如果值<0:
升值误差
self.\uuu小时=值
@财产
def分钟数(自我):
返回自我。\u分钟
@二传手
def分钟数(自身、数值):
如果值<0:
升值误差
self.hours+=int(值/60)
self.\uu分钟=值%60
@财产
def秒数(自我):
返回自我。秒
@二传手
def秒数(自身,数值):
如果值<0:
升值误差
self.minutes+=int(值/60)
self.\uu秒=值%60
我对负时间值有问题。 我要做的是检查时间值(例如,
minutes
)是否设置为负值,如果设置为负值,则引发
ValueError
。 但问题是,我也希望使用负时间格式,我只是不确定如何使用

负时间值应该如何表现? 用我的二传手能做到吗?
我真的无法开始,我不需要你为我编写代码,但至少给出一些提示并解释消极时间是如何工作的。

时间有两个概念:

  • 瞬间
  • 两个瞬间之间的长度(时间跨度或时间增量)
我们以秒和秒的倍数来测量时间跨度

一个时刻是用同一个单位来描述的,被理解为某个参考时间之间的时间跨度(如0 BC或Unix历元)。(尽管单位更为复杂——我们使用的日历不是秒的常规倍数,而是为特定时刻指定“7月16日”这样的好名字)


因此:

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

因此:

  • 瞬间将
    minutes
    设置为负数应为
    ValueError
  • 可能有一种方法
    .later(分钟=10)
    相当于
    。previous(分钟=10)

设置
self.hours
等没有意义,因为无论如何都将使用同名的
@属性
描述符。我认为您将时间增量与绝对时间混淆了。这是一个类建模绝对时间,一天中的一个时间。时间增量对相对时间进行建模,这可能是负数。请仔细查看
datetime
模块。