Класс 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)
Создав объект времени, нам иногда полезно работать только с некоторыми ее отдельными составляющими: часы, минуты, секунды или микросекунды. Для этого можно через точку обратиться к любому из следующих свойств
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
Сравнения объектов 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
Подобно 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 открывает широкие горизонты для разработки, позволяя создавать надежные и производительные системы, работающие с временными данными.