【发布时间】:2010-10-13 23:12:03
【问题描述】:
【问题讨论】:
-
python 使事情复杂化。
标签: python
【问题讨论】:
标签: python
解决方法:
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 对象添加一天。您将避免调试土地。
t == time(23, 59) 上增加 1 小时,我希望拥有 time.max。
这有点讨厌,但是:
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 模块。否则需要手动处理溢出错误等。
解决方案在您的问题中的the link that you provided:
datetime.combine(date.today(), time()) + timedelta(hours=1)
完整示例:
from datetime import date, datetime, time, timedelta
dt = datetime.combine(date.today(), time(23, 55)) + timedelta(minutes=30)
print dt.time()
输出:
00:25:00
【讨论】:
today() 是切换到夏令时的前一天,并且时间增量延伸到不同的时区,会发生什么情况?此代码是否受语言环境影响?
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
【讨论】:
您可以将 time() 更改为 now() 以使其工作
from datetime import datetime, timedelta
datetime.now() + timedelta(hours=1)
【讨论】: