Search code examples
pythondatetimetimedelta

Round time to nearest hour python


I was trying to round off time to the nearest hour in python in a dataframe.

Suppose if a timestamp is 2017-11-18 0:16 it should come as 2017-11-18 0:00 and 2017-11-18 1:56 should round off as 2017-11-18 2:00


Solution

  • I experimented a bit with jpp but ended up with a different solution as adding one hour at hour 23 crashed the thing.

    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))
    

    Returns:

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