【发布时间】:2015-10-07 14:00:07
【问题描述】:
我首先使用一个纪元时间戳并将其转换为 UTC dt:
d = datetime.utcfromtimestamp(input_epoch)
使用以下 SO 帖子:How can I get hours from a Python datetime?,然后我正在抓紧时间:
h = d.hour + d.minute / 60. + d.second / 3600
但这映射了一个时代,可以转换为上午 10 点 59 分 59 秒到上午 10 点。我想要一个函数,它将使用舍入将给定的纪元映射到最近的小时,例如,小时:00:00-> 小时:00:30:00 -> 小时,小时:30:01-> 小时:59:59 - > 小时+1。
我目前最好的想法是:
d = datetime.utcfromtimestamp(input_epoch+3600/2)
但我不相信这是正确的。是否有另一个内置库函数可以更严格地执行此操作?
【问题讨论】:
-
为什么不增加 30 分钟呢?如果分钟超过 30 分钟,那么再增加 30 分钟会将时间更改为下一个小时。因此,您所拥有的应该可以正常工作,但您可以将其更改为 1800 而不是 3600/2
-
注意:
d.second / 3600和d.second / 3600.在 Python 2 中存在很大差异(您链接的帖子使用后者)。 -
@J.F.Sebastian:这给了我一个提醒人们的借口:尽可能使用 Py3 语法!我基本上每个文件都以
from __future__ import absolute_import, division, print_function开头,因为我在Py2 和Py3 中都工作,而且一直需要转换思维是很痛苦的。 (是的,我知道,现有代码并不总是可行的)