Рубрики
Без рубрики

Как проверить, находится ли текущее время в диапазоне Python?

https://youtu.be/jnzz8eib688 Формулировка проблем с учетом времени Timestamp X, таких как текущее время и интервал времени, отмеченные запусками и конечными метками. Цель: создать функцию, которая проверяет, попадает ли данный меток времени в интервале [Пуск, конец], так что и x … Как проверить, находится ли текущее время в диапазоне Python? Читать далее “

Автор оригинала: Chris.

Постановка проблемы

Дано Timestamp х такие как текущее время и интервал времени, отмеченные Начать и конец метки времени.

Цель : Создайте функцию, которая проверяет, попадает ли данный меток времени в интервале [Пуск, конец] так что х> = звезда т и x <= конец Отказ

Ограничения : Если интервал пуст, когда Начать и х функция должна вернуться Ложь Отказ

Способ 1: сравнения объектов DateTime

Объекты DateTime сопоставимы, поэтому вы можете сравнить datetime Объекты, использующие < , > , <= , > = и == Операторы сравнения. Поэтому вы можете использовать выражение Начать Чтобы проверить, попадет ли текущее время в интервал [Пуск, конец] При предположении о том, что Начать , конец и Текущий являются datetime объекты.

Чтобы проверить, падает ли текущее время в определенном интервале, используйте следующие шаги (см. Код):

  1. Импорт datetime модуль.
  2. Создайте функцию time_in_range, которая предпринимает три аргумента – начало, конец и текущее время – и возвращает, падает ли текущее время в интервале [Пуск, конец] Отказ
  3. Если интервал пуст, он просто проверяет, больше времени больше времени начала или меньше времени окончания.
  4. Создайте объекты Start и Stop DateTime, используя datetime.time () методы. Чтобы получить текущее время, используйте datetime.dateTime.now (). Время () Отказ
  5. Позвоните 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, которая позволяет проверять, находится время в диапазоне времени, используя эти три этапа:

  1. Установите модуль на PIP Установить dateTimerange В вашей операционной системе оболочка или терминал.
  2. Создайте объект временного диапазона с именем time_range Используя конструктор DateTimerange (запуск, остановка) Отказ
  3. Используйте ключевое слово "В" Чтобы проверить, находится ли определенный временные метки или даже меньший диапазон времени в течение объекта временных диапазонов, таких как Текущий в 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 и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.