python epoch to hour with rounding

时间:2015-10-07 14:00:08

标签: python datetime

我首先使用:

获取一个纪元时间戳并将其转换为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 AM到10 AM。我想要一个函数,它将使用舍入将给定的纪元映射到最接近的小时,例如,小时:00:00->小时:00:30:00 - >小时,小时:30:01->小时:59:59 - >小时+ 1。

我目前最好的想法是:

d = datetime.utcfromtimestamp(input_epoch+3600/2)

但我不相信这是正确的。是否有其他内置库函数可以更严格地执行此操作?

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。