Soh*_*oqi 4 python python-datetime
我不太明白如何datetime.timedelta解释否定论点。
正值:
>>> from datetime import timedelta
>>> d = timedelta(days=1,seconds=1,microseconds=1,milliseconds=1,minutes=1,hours=1,weeks=1)
>>> (d.days, d.seconds, d.microseconds)
>>> (8, 3661, 1001)
Run Code Online (Sandbox Code Playgroud)
这很简单。带有负值的类似示例如下所示:
>>> from datetime import timedelta
>>> d = timedelta(days=-1,seconds=-1,microseconds=-1,milliseconds=-1,minutes=-1,hours=-1,weeks=-1)
>>> (d.days, d.seconds, d.microseconds)
>>> (-9, 82738, 998999)
Run Code Online (Sandbox Code Playgroud)
根据我的理解,秒和微秒的推导如下:
86399 - (-60-3600-1)999999 - (-1-1000)这样对吗?为什么天数等于 -9?
我正在阅读文档的这一部分。但仍然不太了解负值的工作。请分享解释或相关文档链接。谢谢 :)
由于 timedeltas 在内部存储的方式,只有days属性可以采用负值。当 timedelta 被打印回来时,这可能会令人惊讶。文档中的一个有启发性的例子,
>>> d = timedelta(microseconds=-1)
>>> (d.days, d.seconds, d.microseconds)
(-1, 86399, 999999)
Run Code Online (Sandbox Code Playgroud)
IE。-1d + 86399s + 999999µs = -1µs
这是完全有道理的,(-1 week + -1 day) + (-1 hours) + (-1 minutes) + (-1 seconds) + (-1 milliseconds) + (-1 microseconds)等于: (-8 days) + (-1 hours) + (-1 minutes) + (-1 seconds) + (-1 milliseconds) + (-1 microseconds)
如果少于 -8 天,-1 小时,-1 分钟,...天数必须小于 -8 才能使负小时、分钟、秒...变成正小时、分钟,秒......(因为只有天可以用负数表示,其他的,例如秒,总是用正数表示)。这意味着天数必须为 -9。
如果打印d,您将得到-9 days 22:58:58.998999,负 9 天,正 22+ 小时。查看strthetimedelta可以帮助您更好地理解负数的timedelta表示方式。