我正在尝试做这样的事情:
time() + timedelta(hours=1)
是否有简单的解决方法?
我正在尝试做这样的事情:
time() + timedelta(hours=1)
是否有简单的解决方法?
您的问题中提供了一个链接:链接,解决方案就在其中。
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
如果值得向您的项目添加另一个文件 / 依赖项,我刚刚编写了一个扩展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
解决方法:
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
的错误信息。 - jfsdatetime.timedelta(days = 1)
来给一个datetime对象添加一天。这样可以避免调试问题。 - Bobortt == time(23, 59)
,我希望有time.max
。 - felipout2 = t.replace(hour=t.hour+1)
。 - Jakub Kukul这有点过于猥琐了,但是:
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
模块。否则,需要手动处理溢出错误等问题。 - jfs您可以将time()更改为now(),以使其正常工作。
from datetime import datetime, timedelta
datetime.now() + timedelta(hours=1)
一些操作步骤:
``` 1.init_time = time(4,0)
added_time = 8
new_time = datetime.time(init_time.hour+added_time)
import datetime
from dateutil import relativedelta
print(datetime.datetime.now() + relativedelta.relativedelta(hours=1))
>>> 2023-05-09 16:35:57.008271
我也用它来操作日期,以下是一些示例:
# going back one month from today
end_date = datetime.date.today() - relativedelta.relativedelta(months=1)
print(end_date)
>>> 2023-04-09
# going back one month from January 2023
end_date = datetime.date(2023,1,1) - relativedelta.relativedelta(months=1)
print(end_date)
>>> 2022-12-01
希望能对你有所帮助!
date.today()
用于支持正负timedelta。对于正的timedelta,可以使用date.min
。 - jfsdatetime.MAXYEAR
在9999年仍将保持为9999。 - jfs