如何在python中将小时添加到当前时间


158

我可以得到如下的当前时间:

from datetime import datetime
str(datetime.now())[11:19]

结果

'19:43:20'

现在,我正在尝试增加9 hours上述时间,如何在Python中为当前时间增加几个小时?


12
要以这种方式格式化当前时间,请看一下datetime.now().strftime('%H:%M:%S')
eumiro

Answers:


367
from datetime import datetime, timedelta

nine_hours_from_now = datetime.now() + timedelta(hours=9)
#datetime.datetime(2012, 12, 3, 23, 24, 31, 774118)

然后使用字符串格式获取相关内容:

>>> '{:%H:%M:%S}'.format(nine_hours_from_now)
'23:24:31'

如果仅格式化日期时间,则可以使用:

>>> format(nine_hours_from_now, '%H:%M:%S')
'23:24:31'

或者,正如@eumiro在评论中指出的那样- strftime


为什么这不是最佳答案?有副作用吗?未报告的错误?
Braza

6
@Braza OP尚未选择接受。没有副作用或错误。
乔恩·克莱门茨

@JonClements谢谢您的回复:)。我测试了一下,然后确认。
Braza

3
不过,这不是DST安全的。
Antti Haapala

1
该问题询问如何增加小时数,但是可以通过两种方式来减去小时数:1)使用减法运算符(-)代替加法运算符(+);根据文档“ timedelta对象支持日期和datetime对象的某些加法和减法” 2)将负值传递给任何timedelta参数;根据文档,“参数可以是整数,多头或浮点数,并且可以是正数或负数。”
红豌豆

20

导入日期时间和时间增量

>>> from datetime import datetime, timedelta
>>> str(datetime.now() + timedelta(hours=9))[11:19]
'01:41:44'

但是更好的方法是:

>>> (datetime.now() + timedelta(hours=9)).strftime('%H:%M:%S')
'01:42:05'

您可以通过引用strptimestrftime行为来更好地了解python如何处理日期和时间字段


python文档的链接提供了有关解析和格式化date / time的见解。
hc_dev
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.