我首先使用:
获取一个纪元时间戳并将其转换为UTC dtd = 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 AM到10 AM。我想要一个函数,它将使用舍入将给定的纪元映射到最接近的小时,例如,小时:00:00->小时:00:30:00 - >小时,小时:30:01->小时:59:59 - >小时+ 1。
我目前最好的想法是:
d = datetime.utcfromtimestamp(input_epoch+3600/2)
但我不相信这是正确的。是否有其他内置库函数可以更严格地执行此操作?
答案 0 :(得分:1)
如果要将"round half up" tie-breaking rule用于正时间戳(input_epoch > 0
),则添加30分钟并将结果截断为一小时是正确的方法:
d = datetime.utcfromtimestamp(3600 * ((input_epoch + 1800) // 3600))
答案 1 :(得分:0)
我和
一起去h = d.hour + (d.minute + 30 + (d.second + 30) / 60) / 60
如果hour
:29:30也应该导致hour
+ 1。