Python Как узнать, находится ли дата в диапазоне двух дат - PullRequest
0 голосов
/ 08 июля 2019

Я хочу получить, если дата находится в диапазоне двух других дат

Я пытаюсь заставить функцию возвращать True или False, мои аргументы: input1 = 6/8/19, input2 = 7/8/19, input3 = 6/20/19, с этими аргументами я пытаясь придумать, как функция возвращает True, если третий аргумент находится в диапазоне дат input1 и input2, поэтому 6/20/19 будет True, 9/1/19 будет False

ИДК, где бы я начал, хотел бы посмотреть, как это делается

Ответы [ 3 ]

0 голосов
/ 08 июля 2019

Сначала мы должны превратить строковые даты в объекты datetime.Для этого будем использовать strptime ().

from datetime import datetime

def isBetween(date1, date2, date3):
    d1 = datetime.strptime(date1, '%d/%m/%y').date()
    d2 = datetime.strptime(date2, '%d/%m/%y').date()
    d3 = datetime.strptime(date3, '%d/%m/%y').date()

    return d1 < d2 < d3

теперь мы можем передать наши 3 даты в функцию и получить истинный или ложный результат.

strptime () используется для преобразования строкидаты в объекте datetime.эта функция принимает 2 аргумента: первый - строковую дату и второй - шаблон даты для данной строки.

.date () - функция для фильтрации времени ожидания от объекта и получения только даты.

0 голосов
/ 08 июля 2019

Я бы предложил использовать библиотеку datetime для надежных ответов.Мы можем просто преобразовать эти входные данные в объекты реальной даты и сравнить их внутри себя.

Просто построение функции date принимает 3 даты в виде строки и возвращает логическое значение.Он в основном проверит, находится ли date3 между date1 и date2.

Пример:

import datetime as dt

def is_in_middle(date1, date2, date3): #assuming dates are strings 
    date1 = date1.split('/')
    date1 = dt.date(month=date1[0],day=date1[1], year=date1[2])
    date2 = date2.split('/')
    date2 = dt.date(month=date2[0],day=date2[1], year=date2[2])
    date3 = date3.split('/')
    date3 = dt.date(month=date3[0],day=date3[1], year=date3[2])

    return (date1 >= date3 >= date2) or (date1 <= date3 <= date2)
0 голосов
/ 08 июля 2019

Вот пример:

from datetime import datetime

datetime_max = datetime.strptime('Jun 1 2010', '%b %d %Y')

datetime_min = datetime.strptime('Jun 1 2000', '%b %d %Y')

datetime_1 = datetime.strptime('Jun 1 2005', '%b %d %Y')

datetime_2 = datetime.strptime('Jun 1 2012', '%b %d %Y')

if (datetime_1 < datetime_max and datetime_1 > datetime_min):
    print("datetime_1 is between max and min dates")
else:
    print("datetime_1 is not between max and min dates")

if (datetime_2 < datetime_max and datetime_2 > datetime_min):
    print("datetime_2 is between max and min dates")
else:
    print("datetime_2 is not between max and min dates")

Он определяет две связанные даты datetime_max datetime_min, используя python datetime, затем вы используете операторы сравнения между объектами datetime.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...