Python DateTime: как округлить до ближайшего часа

Чтобы округлить объект Python datetimeдо ближайшего часа, вы можете использовать несколько методов. Вот несколько примеров:

Метод 1: использование datetime.timedeltaи datetime.datetime.replace:

import datetime
def round_to_nearest_hour(dt):
    rounded = dt.replace(second=0, microsecond=0)
    if rounded.minute >= 30:
        rounded += datetime.timedelta(hours=1)
    return rounded

Метод 2: использование datetime.timedeltaи целочисленного деления:

import datetime
def round_to_nearest_hour(dt):
    rounded = dt.replace(second=0, microsecond=0)
    rounded += datetime.timedelta(minutes=30)
    rounded -= datetime.timedelta(minutes=rounded.minute % 60)
    return rounded

Метод 3: использование datetime.datetimeи datetime.timedeltaс divmod:

import datetime
def round_to_nearest_hour(dt):
    rounded = dt.replace(second=0, microsecond=0)
    rounded += datetime.timedelta(hours=1) // 2
    rounded -= datetime.timedelta(minutes=rounded.minute % 60)
    return rounded

Эти методы округляют заданный объект datetimeдо ближайшего часа. Вы можете выбрать метод, который лучше всего соответствует вашим потребностям.