Постановка проблемы
Дано Timestamp х
такие как текущее время и интервал времени, отмеченные Начать
и конец
метки времени.
Цель : Создайте функцию, которая проверяет, попадает ли данный меток времени в интервале [Пуск, конец]
так что х> = звезда
т и x <= конец
Отказ
Ограничения : Если интервал пуст, когда Начать
и х
функция должна вернуться Ложь
Отказ
Способ 1: сравнения объектов DateTime
Объекты DateTime сопоставимы, поэтому вы можете сравнить datetime
Объекты, использующие <
, >
, <=
, > =
и ==
Операторы сравнения. Поэтому вы можете использовать выражение Начать Чтобы проверить, попадет ли текущее время в интервал [Пуск, конец]
При предположении о том, что Начать
, конец
и Текущий
являются datetime
объекты.
Чтобы проверить, падает ли текущее время в определенном интервале, используйте следующие шаги (см. Код):
- Импорт
datetime
модуль. - Создайте функцию time_in_range, которая предпринимает три аргумента – начало, конец и текущее время – и возвращает, падает ли текущее время в интервале
[Пуск, конец]
Отказ - Если интервал пуст, он просто проверяет, больше времени больше времени начала или меньше времени окончания.
- Создайте объекты Start и Stop DateTime, используя
datetime.time ()
методы. Чтобы получить текущее время, используйтеdatetime.dateTime.now (). Время ()
Отказ - Позвоните
time_in_range (запуск, конец, ток)
Чтобы проверить, падает ли текущее время в интервале[Пуск, конец]
Отказ
Вот код:
import datetime def time_in_range(start, end, current): """Returns whether current is in the range [start, end]""" return start <= current <= end start = datetime.time(0, 0, 0) end = datetime.time(23, 55, 0) current = datetime.datetime.now().time() print(time_in_range(start, end, current)) # True (if you're not a night owl) ;)
Код возвращается Правда
Если вы запустите его между ( HH: MM: SS ) 00:00:00 и 23:55:00 на твоем компьютере. Только если вы запускаете его между 23:55:00 и 23:59:59 Это возвращает Ложь
Отказ
Способ 2: dateTimerange
DateTimerange Является ли библиотека Python, которая позволяет проверять, находится время в диапазоне времени, используя эти три этапа:
- Установите модуль на
PIP Установить dateTimerange
В вашей операционной системе оболочка или терминал. - Создайте объект временного диапазона с именем
time_range
Используя конструкторDateTimerange (запуск, остановка)
Отказ - Используйте ключевое слово
"В"
Чтобы проверить, находится ли определенный временные метки или даже меньший диапазон времени в течение объекта временных диапазонов, таких какТекущий в Time_range
Отказ
Документация Предоставляет следующий пример код:
from datetimerange import DateTimeRange time_range = DateTimeRange("2020-03-22T10:00:00+0900", "2025-03-22T10:10:00+0900") print("2022-03-22T10:05:00+0900" in time_range) print("2042-03-22T10:15:00+0900" in time_range) time_range_smaller = DateTimeRange("2021-03-22T10:03:00+0900", "2022-03-22T10:07:00+0900") print(time_range_smaller in time_range)
Вот вывод этого примерного кода:
True False True
Первый меток времени падает в диапазоне, поскольку 2022 год находится в [2020, 2025].
Вторым временем времени не попадает в ассортимент [2020, 2025], потому что это касается года 2042 года (возможно, будущее, когда вы читаете это).
Третий интервал времени – это меньший интервал [2021, 2022], который преобладает [2020, 2025]. Таким образом, он падает в течение интервала, а возвращаемое значение – Правда
Отказ
Если вам нужна функция, чтобы решить проблему формулирования точно, используйте следующий код:
def time_in_range(start, end, current): """Returns whether current is in the range [start, end]""" return current in DateTimeRange(start, end) print(time_in_range("2027-03-22T10:00:00+0900", "2025-03-22T10:10:00+0900", "2042-03-22T10:15:00+0900")) # True
Код использует строковые представления Yyyy-mm-ddthhth: мм: ss + millisecs Чтобы указать три метки времени Начать
, конец
и Текущий
Отказ
Резюме
Объекты DateTime сопоставимы, поэтому вы можете сравнить datetime
Объекты, использующие <
, >
, <=
, > =
и ==
Операторы сравнения.
Поэтому вы можете использовать выражение Начать Чтобы проверить, попадет ли текущее время в интервал [Пуск, конец]
При предположении о том, что Начать
, конец
и Текущий
являются datetime
объекты.
В качестве альтернативы вы можете использовать библиотеку Python DateTimerange Чтобы проверить, находится время в диапазоне времени, но вам нужно сначала установить его, используя PIP Установить dateTimerange
Отказ
Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.
Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.
Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.