到最近的小时python的时间

时间:2018-02-22 21:56:06

标签: python datetime timedelta

我试图在数据帧中将时间缩短到python中最接近的小时。

假设时间戳是2017-11-18 0:16,它应该是2017-11-18 0:00 并且2017-11-18 1:56应该为2017-11-18 2:00

4 个答案:

答案 0 :(得分:3)

这是一种方式。

from datetime import datetime

now = datetime.now()

def rounder(t):
    if t.minute >= 30:
        return t.replace(second=0, microsecond=0, minute=0, hour=t.hour+1)
    else:
        return t.replace(second=0, microsecond=0, minute=0)

now           # 2018-02-22 22:03:53.831589
rounder(now)  # 2018-02-22 22:00:00.000000

答案 1 :(得分:3)

我用jpp进行了一些实验,但最终得到了一个不同的解决方案,因为在第23小时增加了一个小时就崩溃了。

from datetime import datetime, timedelta

now = datetime.now()

def hour_rounder(t):
    # Rounds to nearest hour by adding a timedelta hour if minute >= 30
    return (t.replace(second=0, microsecond=0, minute=0, hour=t.hour)
               +timedelta(hours=t.minute//30))

print(now)
print(hour_rounder(now))

返回:

2018-02-22 23:42:43.352133
2018-02-23 00:00:00

答案 2 :(得分:2)

import pandas as pd

pd.Timestamp.now().round('60min').to_pydatetime()

返回:

datetime.datetime(2018, 2, 23, 0, 0)

答案 3 :(得分:1)

有一个通用功能可以在任何时间间隔here内舍入日期时间https://docs.aspose.com/display/cellsnet/Using+LightCells+API

示例:

print roundTime(datetime.datetime(2012,12,31,23,44,59,1234),roundTo=60*60)
--> 2013-01-01 00:00:00