Работаем с классом 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

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

  • hour
  • minute
  • second
  • microsecond
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 открывает широкие горизонты для разработки, позволяя создавать надежные и производительные системы, работающие с временными данными.

Перейти к следующему шагу

Комментарии