您应该转换为日期时间对象:
from datetime import datetime
x = {'filename': {'filetype': ('5/6/2019','12/31/2019')},'filename2': {'filetype': ('3/24/2018','5/6/2019')}}
def fn(dateobj,filetype):
dateobj = datetime.strptime(dateobj,'%m/%d/%Y')
startdate = datetime.strptime(filetype[0],'%m/%d/%Y')
enddate = datetime.strptime(filetype[1],'%m/%d/%Y')
return startdate <= dateobj <= enddate
print(fn('6/6/2019',x['filename']['filetype']))
print(fn('4/6/2019',x['filename']['filetype']))
这将打印:
True
False
,
正如评论中提到的人一样,建议将字符串日期转换为datetime对象。一种方法是:
from datetime import datetime
new_date = datetime.strptime('12/31/2019','%m/%d/%Y')
假设所有日期字符串都是日期时间对象,则您的函数将变为:
def fn(date,filetype):
for filename,range in x.items():
if filetype in range:
start,end = range[filetype]
if start <= date <= end:
return filename
如果日期在范围内,则将返回文件名,否则返回None
,
使用split
按照以下顺序将日期转换为3个数值:年,月,日。然后,您可以将日期作为元组进行比较。
def convert(datestr):
m,d,y = datestr.split('/')
return (int(y),int(m),int(d))
date1 = convert('12/31/2018')
date2 = convert('1/1/2019')
print(date1 < date2)
对列表使用相同的方法,但是不能将这两种类型混合使用,比较中的所有日期都是元组,或者所有日期都是列表。
对于日期间隔,只需进行测试(例如在if
语句中):
begin <= date <= end
其中所有3个值均如上所述。
本文链接:https://www.f2er.com/3161141.html