我希望将日期列表与今天的日期进行比较,并希望返回最接近的日期。我对此有各种各样的想法,但它们看起来非常复杂,并且涉及根据差异天数和最小差异进行评分。但我不知道如何做到这一点,任何指点都将不胜感激。
import datetime
import re
date_list = ['2019-02-10', '2018-01-13', '2019-02-8',]
now = datetime.date.today()
for date_ in date_list:
match = re.match('.*(\d{4})-(\d{2})-(\d{2}).*', date_)
if match:
year = match.group(1)
month = match.group(2)
day = match.group(3)
delta = now - datetime.date(int(year), int(month), int(day))
print(delta)
当我在等待编辑
所以我用下面的方法解决了这个问题
import datetime
import re
date_list = ['2019-02-10', '2018-01-13', '2019-02-8',]
now = datetime.date.today()
for date_ in date_list:
match = re.match('.*(\d{4})-(\d{2})-(\d{2}).*', date_)
if match:
year = match.group(1)
month = match.group(2)
day = match.group(3)
delta = now - datetime.date(int(year), int(month), int(day))
dates_range.append(int(delta.days))
days = min(s for s in dates_range)
最佳答案
将每个字符串转换为 datetime.date 对象,然后相减并得到最小的差值
import datetime
import re
date_list = ['2019-02-10', '2018-01-13', '2019-02-8',]
now = datetime.date.today()
date_list_converted = [datetime.datetime.strptime(each_date, "%Y-%m-%d").date() for each_date in date_list]
differences = [abs(now - each_date) for each_date in date_list_converted]
minimum = min(differences)
closest_date = date_list[differences.index(minimum)]
关于python - 比较日期并找到最接近当前日期的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54632081/