【问题标题】:How to add hours to current time in python如何在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')

标签: python time add timedelta


【解决方案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】:

导入datetimetimedelta

>>> 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,“参数可能是整数、长整数或浮点数,可能是正数或负数。”
猜你喜欢
  • 2010-10-10
  • 1970-01-01
  • 1970-01-01
  • 2017-03-28
  • 1970-01-01
  • 2012-12-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多