我正在尝试做这样的事情:
time() + timedelta(hours=1)
但是,Python不允许这样做,这显然是有充分理由的。
有没有人有一个简单的解决方法?
Answers:
date.today()
用于同时支持正负时间增量。date.min
将为正时差工作。
datetime.MAXYEAR
在9999中会保留9999。–
如果值得在您的项目中添加另一个文件/依赖项,那么我已经编写了一个很小的小类,该类datetime.time
具有算术能力。如果您经过午夜,它就会绕来绕去:
>>> from nptime import nptime
>>> from datetime import timedelta
>>> afternoon = nptime(12, 24) + timedelta(days=1, minutes=36)
>>> afternoon
nptime(13, 0)
>>> str(afternoon)
'13:00:00'
可以从PyPi以nptime
(“非修整时间”)或在GitHub上获得:https : //github.com/tgs/nptime
这有点讨厌,但是:
from datetime import datetime, timedelta
now = datetime.now().time()
# Just use January the first, 2000
d1 = datetime(2000, 1, 1, now.hour, now.minute, now.second)
d2 = d1 + timedelta(hours=1, minutes=23)
print d2.time()
datetime
模块。否则,将需要手动处理“溢出”错误。
解决方法:
t = time()
t2 = time(t.hour+1, t.minute, t.second, t.microsecond)
如果不需要那么多精度,也可以忽略微秒。
t == time(23,59)
话,这种方法将行不通。当您添加时1
,t.hour
您会得到ValueError: hour must be in 0..23
datetime.timedelta(days=1)
datetime对象添加一天。您将避免调试土地。
today()
在切换到夏令时的前一天,并且时间范围扩展到不同的时区,会发生什么情况?该代码受语言环境影响吗?