Введение
Калькулятор времени на Python — это удобный инструмент, который позволяет автоматически выполнять вычисления с датами, интервалами, продолжительностью задач или событий. Такой функционал часто используется в учёте рабочего времени, планировании проектов, автоматизации отчетов, создании ботов и даже в научных расчётах.
В этой статье мы разберём, как создать собственный калькулятор времени на Python.
Калькулятор перевода времени
Для начала рассмотрим простой калькулятор перевода времени. Этот простой, но полезный калькулятор позволяет преобразовывать часы в минуты и секунды.
Получение данных от пользователя
Первым делом добавим пользователю возможность вводить количество часов:
hours = float(input("Введите количество часов: "))
Пользователь вводит количество часов — это может быть:
- целое число (2, 5, 12),
- дробное число (1.5, 0.75, 2.25).
Используем float, а не int, чтобы поддерживать дробные часы. Например:
- 1.5 часа — 90 минут
- 0.25 часа — 15 минут
Перевод часов в минуты
В одном часе 60 минут. Следовательно чтобы узнать, сколько минут в X часах, достаточно умножить часы на 60.
hours = float(input("Введите количество часов: "))
minutes = hours * 60
Перевод часов в секунды
Так как 60 минут это 3600 секунд, чтобы получить секунды — мы должны будем умножить введённое пользователем количество часов на 3600:
hours = float(input("Введите количество часов: "))
minutes = hours * 60
seconds = hours * 3600
Вывод результата
Добавим вывод результата:
hours = float(input("Введите количество часов: "))
minutes = hours * 60
seconds = hours * 3600
print(f"{hours} час/ов — это:\n{minutes} минут\n{seconds} секунд.")
Пример работы кода
# Введите количество часов: 1
# 1.0 часов — это:
# 60.0 минут
# 3600.0 секунд.
Калькулятор разницы времени
Теперь напишем калькулятор, который работает как простой «калькулятор разницы времени», позволяя пользователю узнать, сколько прошло между двумя моментами.
Импорт класса datetime
Первым делом мы импортируем класс datetime из модуля datetime, который умеет преобразовывать строки в даты и выполнять математические операции над временем:
from datetime import datetime
Указываем формат даты
Создадим переменную date_format, в которой будет храниться формат даты:
from datetime import datetime
date_format = "%d.%m.%Y %H:%M"
Сам Python должен понимать, как именно пользователь вводит дату. Поддерживаемые форматы:
- %Y — год,
- %m — месяц,
- %d — день,
- %H:%M — часы и минуты.
Если указать неверный формат, то будет ошибка, поэтому мы чётко определяем правила ввода.
Получение данных от пользователя
Теперь добавим пользователю возможность вводить данные, а именно первую дату и вторую:
from datetime import datetime
date_format = "%d.%m.%Y %H:%M"
start = input("Введите начальную дату (ДД-ММ-ГГГГ ЧЧ:ММ): ")
end = input("Введите конечную дату (ДД-ММ-ГГГГ ЧЧ:ММ): ")
Преобразование строк в объекты datetime
Т.к. Python не может вычитать строки друг из друга, мы их преобразуем в дату при помощи метода strptime():
from datetime import datetime
date_format = "%d.%m.%Y %H:%M"
start = input("Введите начальную дату (ДД-ММ-ГГГГ ЧЧ:ММ): ")
end = input("Введите конечную дату (ДД-ММ-ГГГГ ЧЧ:ММ): ")
start_dt = datetime.strptime(start, date_format)
end_dt = datetime.strptime(end, date_format)
Теперь start_dt и end_dt — «настоящие» даты, с которыми можно выполнять вычисления.
Добавления вычислений и вывода результата
Добавим вычисление разницы между датами и сохраним их в переменную delta. Также добавим вывод результата сразу и в днях и в секундах и в часах:
from datetime import datetime
date_format = "%d.%m.%Y %H:%M"
start = input("Введите начальную дату (ДД-ММ-ГГГГ ЧЧ:ММ): ")
end = input("Введите конечную дату (ДД-ММ-ГГГГ ЧЧ:ММ): ")
start_dt = datetime.strptime(start, date_format)
end_dt = datetime.strptime(end, date_format)
delta = end_dt - start_dt
print(f"Разница: {delta}")
print(f"В днях: {delta.days}")
print(f"В секундах: {delta.total_seconds()}")
Когда мы вычитаем два объекта типа datetime, Python возвращает объект timedelta.
Это специальная структура, которая показывает:
- Сколько дней между датами;
- Сколько секунд;
- Сколько часов и минут (внутри объекта).
Пример работы кода
В качестве примера введём дату написания данной статьи и рассчитаем, сколько осталось до Нового Года:
# Введите начальную дату (ДД-ММ-ГГГГ ЧЧ:ММ): 06.12.2025 10:00
# Введите конечную дату (ДД-ММ-ГГГГ ЧЧ:ММ): 01.01.2026 10:00
# Разница: 26 days, 0:00:00
# В днях: 26
# В секундах: 2246400.0
Калькулятор смещения даты
В данном блоке мы напишем код, который делает другую важную операцию — смещение даты в будущее или прошлое.
Например:
- +3 дня — узнать дату через 3 дня
- -10 дней — получить дату 10 дней назад
- +365 дней — дата через год
Импорт класса всего необходимого
Помимо класса datetime мы также импортируем timedelta:
from datetime import datetime, timedelta
Получаем дату от пользователя
Далее дадим пользователю возможность ввести дату в виде строки и сразу преобразуем её в дату:
from datetime import datetime, timedelta
base = input("Введите дату: ")
base_dt = datetime.strptime(base, "%Y-%m-%d")
Получаем «интервал смещения»
Также добавим ввод пользователем интервала смещения, т.е. на сколько сместить введённую им ранее дату и в какую сторону:
from datetime import datetime, timedelta
base = input("Введите дату: ")
base_dt = datetime.strptime(base, "%Y-%m-%d")
days = int(input("На сколько дней сместить дату: "))
К примеру, если пользователь введёт -5, Python поймёт это как «5 дней назад».
Добавляем или вычитаем дни
Добавим расчёты, а также вывод результата:
from datetime import datetime, timedelta
base = input("Введите дату: ")
base_dt = datetime.strptime(base, "%Y-%m-%d")
days = int(input("На сколько дней сместить дату: "))
new_date = base_dt + timedelta(days=days)
print(f"Новая дата: {new_date.date()}")
Пример работы кода
# 1 Пример
# Введите дату: 06.12.2025
# На сколько дней сместить дату: 25
# Новая дата: 2025-12-31
# 2 Пример
# Введите дату: 06.12.2025
# На сколько дней сместить дату: -25
# Новая дата: 2025-11-11
Универсальный калькулятор времени
И как бонусный вариант, вот универсальный калькулятор, который содержит все ранее рассмотренные варианты:
from datetime import datetime, timedelta
def calc_time():
print("\nВыберите операцию:")
print("1 - разница между двумя датами")
print("2 - перевод часов в минуты и секунды")
print("3 - смещение даты на N дней")
choice = input("Ваш выбор: ")
if choice == "1":
fmt = "%Y-%m-%d %H:%M"
d1 = datetime.strptime(input("Первая дата: "), fmt)
d2 = datetime.strptime(input("Вторая дата: "), fmt)
print("Разница:", d2 - d1)
elif choice == "2":
h = float(input("Введите часы: "))
print(f"{h} ч = {h*60} мин = {h*3600} сек")
elif choice == "3":
d = datetime.strptime(input("Введите дату: "), "%Y-%m-%d")
n = int(input("Смещение (дни): "))
print("Результат:", (d + timedelta(days=n)).date())
else:
print("Неверный выбор.")
if __name__ == "__main__":
calc_time()
Заключение
Создать калькулятор времени на Python может каждый — от новичка до опытного разработчика. Язык позволяет гибко работать с датами, интервалами и форматами времени.
Надеюсь Вам понравилась статья, желаю удачи и успехов! 🙂
Мой YouTube канал
Курс по созданию телеграм-ботов на Python с фреймворком Aiogram