Программа курса:
Работаем с классом time
Класс time в Python является одним из ключевых инструментов для работы с временем. Особенно полезен этот класс при создании приложений, где точное отслеживание времени имеет решающее значение, таких как системы мониторинга, таймеры или игры.
Основные функции класса time включают в себя возможность работы с временными метками, форматирование времени, а также создание задержек в выполнении программ. Например, функция time.sleep(seconds) позволяет приостановить выполнение программы на заданное количество секунд, что удобно для создания пауз в циклах или анимациях.
Кроме того, класс time предоставляет методы для получения текущего времени, преобразования времени в различные форматы и вычисления разницы между двумя моментами.
Чтобы начать работать с этим классом, его нужно сперва импортировать. Предпочтительнее импортировать как показано ниже:
from datetime import time
time(20, 30, 40)Но можете встретить и такой вариант импортирования
import datetime
datetime.time(20, 30, 40)Обратимся к документации классаtime, увидим следующее:

Обратите внимание на квадратные скобки, они указывают на то, что аргументы в них необязательны. Каждая вложенная пара квадратных скобок говорит нам о том, что аргумент еще более не обязателен, чем предыдущий.
Класс time может принимать следующие аргументы:
hour- часы (от 0 до 23), по умолчанию 0;minute- минуты (от 0 до 59), по умолчанию 0;second- секунды (от 0 до 59), по умолчанию 0;microsecond- микросекунды (от 0 до 999999), по умолчанию 0;tzinfo- информация о часовом поясе (объект типаdatetime.timezone), по умолчаниюNone.
Аргумент tzinfo может использоваться для представления времени в определенном часовом поясе. Если аргумент не передан, то время будет представлено в текущем часовом поясе.
from datetime import time
empty_time = time()
print(empty_time)
# 00:00:00
only_hours = time(22)
print(only_hours)
# 22:00:00
hours_and_min = time(10, 22)
print(hours_and_min)
# 10:22:00
hours_and_min_sec = time(8, 10, 22)
print(hours_and_min_sec)
# 08:10:22
full_time = time(4, 8, 10, 22)
print(full_time). # 04:08:10.000022Обратите внимание, что время по умолчанию выводится в определенном формате:
Часы:Минуты:Секунды:МикросекундыСперва два знака отводятся на часы, потом через знак двоеточия два знака предназначены для минут, потом вновь двоеточие и два знака для секунд. Если присутствуют микросекунды, то через точку выводится и эта информация при помощи 6 символов. Везде добавляются незначащие нули для заполнения, если это требуется.
При попытке создать время с невалидными(неправильными) значениями вы увидите ошибку. В часы можно передавать число от 0 до 23, в минуты - число от 0 до 59, в секунды - от 0 до 59, в микросекунды - от 0 до 999999. Передав значения, отличающиеся от перечисленных, получите исключение ValueError
Также время можно создавать при помощи передачи значений в именованные атрибуты:
from datetime import time
only_hours = time(hour=22)
only_minutes = time(minute=22)
only_seconds = time(second=22)
print(only_hours, only_minutes, only_seconds)
hours_and_min = time(minute=10, hour=12)
hours_and_sec = time(hour=4, second=10)
print(hours_and_min, hours_and_sec)
hours_and_min_sec = time(hour=4, minute=7, second=10)
print(hours_and_min_sec)
full_time = time(minute=21, second=10, hour=4, microsecond=545)
print(full_time)Доступ к отдельным компонентам объекта time
Создав объект времени, нам иногда полезно работать только с некоторыми ее отдельными составляющими: часы, минуты, секунды или микросекунды. Для этого можно через точку обратиться к любому из следующих свойств
hourminutesecondmicrosecond
from datetime import time
full_time = time(minute=21, second=10, hour=4, microsecond=545)
print(full_time.microsecond)
print(full_time.second)
print(full_time.minute)
print(full_time.hour)Время также является неизменяемым объектом. Поэтому вы получите ошибку, если попробуйте через присвоение изменить значение у текущего объекта.
from datetime import time
full_time = time(minute=21, second=10, hour=4, microsecond=545)
full_time.microsecond = 22И мы получим ошибку - AttributeError: attribute 'microsecond' of 'datetime.time' objects is not writable
Сравнение времени в Python
Сравнения объектов datetime.time осуществляется так же, как и сравнение других объектов - с помощью операторов сравнения <, <=, >, >=, == и !=. При этом сравнение происходит по значению времени.
Два объекта datetime.time будут равны, если они будут содержать одинаковое значение часов, минут, секунд и микросекунд , то есть одновременно все четыре свойства должны совпадать. Если у объектов datetime.time будут не совпадать хотя бы одно из значений (часы, минуты, секунды или микросекунды), времена будут считаться неравными.
from datetime import time
time1 = time(11, 4, 15)
time2 = time(11, 4, 15)
if time1 == time2:
print("Времена совпадают")
else:
print("Времена не совпадают")Мы получим результат - Времена совпадают
from datetime import time
time1 = time(11, 4, 15, 3)
time2 = time(11, 4, 15)
if time1 > time2:
print(f"{time1} позже чем {time2}")
elif time1 < time2:
print(f"{time1} раньше чем {time2}")
else:
print(f"{time1} совпадает с {time2}")Получим результат - 11:04:15.000003 позже чем 11:04:15
Использование функций max() и min()
Подобно datetime.date объекты времени datetime.time также можно передать функциям max и min для нахождения максимального и минимальных времен
from datetime import time
time1 = time(10, 4, 15)
time2 = time(9, 3, 14)
time3 = time(15, 2, 16)
max_time = max(time1, time2, time3)
min_time = min(time1, time2, time3)
print(max_time)
print(min_time)Мы получим ответ:
15:02:16
09:03:14Используя комбинацию методов этого класса, программисты могут создавать сложные временные механизмы, такие как планировщики задач, которые выполняют действия в заранее определенные моменты. Это может быть полезно в сценариях от автоматизации до создания игр, где важна реакция на временные события.
В целом, изучение и использование класса time в Python открывает широкие горизонты для разработки, позволяя создавать надежные и производительные системы, работающие с временными данными.