如何在python中将小时添加到当前时间
Posted
技术标签:
【中文标题】如何在python中将小时添加到当前时间【英文标题】:How to add hours to current time in python 【发布时间】:2012-11-21 00:48:53 【问题描述】:我可以得到当前时间如下:
from datetime import datetime
str(datetime.now())[11:19]
结果
'19:43:20'
现在,我正在尝试将9 hours
添加到上述时间,如何在 Python 中将小时添加到当前时间?
【问题讨论】:
要以这种方式格式化当前时间,请查看datetime.now().strftime('%H:%M:%S')
【参考方案1】:
这适用于我使用 seconds
而不是小时,还可以使用函数转换回 UTC 时间。
from datetime import timezone, datetime, timedelta
import datetime
def utc_converter(dt):
dt = datetime.datetime.now(timezone.utc)
utc_time = dt.replace(tzinfo=timezone.utc)
utc_timestamp = utc_time.timestamp()
return utc_timestamp
# create start and end timestamps
_now = datetime.datetime.now()
str_start = str(utc_converter(_now))
_end = _now + timedelta(seconds=10)
str_end = str(utc_converter(_end))
【讨论】:
utc_time = dt.replace(tzinfo=timezone.utc)
是不必要的 - dt
的 tzinfo 已经正确设置为 timezone.utc 此外,您应该导入模块或形成它的特定类,而不是两者。
您是否有机会通过发布参考我的答案的答案给我一个提示?我可以使用它,任何帮助都不会在这里得到很多智慧。
你的意思是进口还是tzinfo?关于导入,在您的代码 sn-p 的第一行中,您从模块中导入特定的类,在第二行中,您也导入整个模块(其中当然包括类)。两种方法都可以,只使用其中一种来提高可读性;-)【参考方案2】:
导入datetime 和timedelta:
>>> 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'
您可以参考strptime
and strftime
behavior 以更好地了解python如何处理日期和时间字段
【讨论】:
python 文档的链接让您深入了解解析和格式化日期/时间。【参考方案3】: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 在 cmets 中指出的那样 - strftime
【讨论】:
为什么这不是最佳答案?有没有副作用?未报告的错误? @Braza OP 只是没有选择接受它。没有副作用或错误。 @JonClements 谢谢你的回复:)。我测试了它并确认了。 这不是 DST 安全的。 问题询问如何加小时,但减小时可以通过两种方式完成:1)使用减法运算符(-
) 而不是加法运算符 (+
);根据文档“timedelta
对象支持日期和datetime
对象的某些加法和减法” 2)将负值传递给任何timedelta
参数;根据the documentation,“参数可能是整数、长整数或浮点数,可能是正数或负数。”以上是关于如何在python中将小时添加到当前时间的主要内容,如果未能解决你的问题,请参考以下文章
Google Apps 脚本 - 将 n 小时添加到当前时间和日期
如何在 SQL Server 中将纪元时间与 24 小时前进行比较?