Python如何查看日期是否在两个日期范围内

时间:2019-07-08 12:57:19

标签: python sorting date range

我想知道某个日期是否在另外两个日期范围内

我正在尝试让一个函数返回True或False,我的参数是input1 = 6/8/19,input2 = 7/8/19,input3 = 6/20/19,这些参数是尝试考虑一种方法,如果第三个参数在input1和input2日期范围内,则该函数返回True,因此6/20/19将为True,9/1/19将为False

我想从哪里开始的Idk,很想看看它是如何完成的

3 个答案:

答案 0 :(得分:0)

这里是一个例子:

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")

它使用python datetime定义了两个绑定日期datetime_max datetime_min,然后在datetime对象之间使用比较运算符。

答案 1 :(得分:0)

首先,我们应该将字符串日期转换为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()函数用于过滤对象超时并仅获取日期。

答案 2 :(得分:0)

我建议使用日期时间库以获得可靠的答案。我们可以将这些输入转换为实际的日期对象,然后在它们内部进行比较。

简单地构建一个函数日期就以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)