Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг
ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70% Забронировать скидку
07 Июл 2023
2 мин
479

Стандартный способ добавления N секунд к datetime.time в Python

При работе с датой и временем в Python часто возникают вопросы, как добавить определенное количество секунд к заданному времени. Например, если у нас

При работе с датой и временем в Python часто возникают вопросы, как добавить определенное количество секунд к заданному времени. Например, если у нас есть время ’11:34:59′, как добавить к нему 3 секунды, чтобы получить ’11:35:02′?

Проблема в том, что непосредственное добавление числа секунд к объекту datetime.time не поддерживается. Прямое сложение datetime.time(11, 34, 59) + 3 вызовет ошибку TypeError: unsupported operand type(s) for +: 'datetime.time' and 'int'. Также не подойдет и использование datetime.timedelta, так как это тоже вызовет ошибку TypeError: unsupported operand type(s) for +: 'datetime.time' and 'datetime.timedelta'. Нельзя также сложить два объекта datetime.time, это тоже вызовет ошибку.

Необходимо преобразовать время в секунды, добавить к нему нужное количество секунд и затем преобразовать обратно в формат времени. Для этого можно использовать следующую функцию:

import datetime

def add_secs_to_time(timeval, secs_to_add):
    secs = timeval.hour * 3600 + timeval.minute * 60 + timeval.second
    secs += secs_to_add
    return datetime.time(secs // 3600, (secs % 3600) // 60, secs % 60)

Эта функция принимает на вход объект datetime.time и количество секунд, которые нужно добавить. Сначала она переводит время в секунды, затем добавляет к ним нужное количество секунд и, наконец, преобразует результат обратно в формат времени, используя деление с остатком.

Таким образом, этот подход обеспечивает стандартный и простой способ добавления секунд к заданному времени в Python.

Добавить комментарий

Подарок
Забрать подарок