我想知道某个日期是否在另外两个日期范围内
我正在尝试让一个函数返回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,很想看看它是如何完成的
答案 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)