python - 比较日期并找到最接近当前日期的日期

标签 python python-3.x

我希望将日期列表与今天的日期进行比较,并希望返回最接近的日期。我对此有各种各样的想法,但它们看起来非常复杂,并且涉及根据差异天数和最小差异进行评分。但我不知道如何做到这一点,任何指点都将不胜感激。

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/

相关文章:

python-3.x - Python - 快速 HDF5 时间序列数据查询

python - 如何使用 FastCGI 部署 django 1.5

python - 当需要包含非 python 文件时,使用 PyInstaller 创建单个 exe?

Python 请求获取 ('Connection aborted.' , BadStatusLine ("' '",)) 错误

python - Selenium 点击的视觉反馈

python - 图像未出现在 django 2.1 的模板中

python - 使用 gtkglade 构建可重用组件

python - 如何使用 XGboost 针对不同的 `eval_metric` 优化 sklearn 管道?

python - 将 linux 2.7 上的 python 更新到 3.5

python - 打开文本文件