【发布时间】:2025-07-17 12:05:01
【问题描述】:
我的目标是从列表中获取到今天日期的下一个最接近的日期(在未来,而不是过去)。为简单起见,列表(格式为例如2017-01-31;YYYY-MM-DD)是本赛季的每场足球比赛,我正在尝试创建一个脚本来部分找到“下一场”足球比赛。
我在 Internet 和 Stack Overflow 上搜索了答案并找到了 promising post,但是提供的解决方案使用了不同的格式,当我尝试对其进行定制时,它会触发异常。
我的逻辑包括解析 RSS 提要,所以我只提供原始列表。考虑到这一点,我的简化代码如下:
today = str(datetime.date.today())
print(today)
scheduledatelist = ['2017-09-01', '2017-09-09', '2017-09-16', '2017-09-23', '2017-09-30', '2017-10-07', '2017-10-14', '2017-10-21', '2017-10-27', '2017-11-11', '2017-11-18', '2017-11-25']
scheduledatelist = list(reversed(scheduledatelist)) #purpose: to have earliest dates first
这是我尝试改编上一篇文章的解决方案(我不精通函数式编程,所以我可能没有正确改编它):
get_datetime = lambda s: datetime.datetime.strptime(s, "%Y-%m-%d")
base = get_datetime(today)
later = filter(lambda d: today(d[0]) > today, scheduledatelist)
closest_date = min(later, key = lambda d: today(d[0]))
print(closest_date)
不管我的尝试如何(这在我的情况下可能不是最好的,因为它改变了格式并且我需要最终值仍然是YYYY-MM-DD),有没有更简单的方法来做到这一点?我需要下一场比赛(最接近今天)的价值,因为它将继续在我的逻辑中使用。所以回顾一下,我如何才能在我的列表中找到最近的日期,展望未来,从今天开始。感谢您的帮助!
【问题讨论】:
-
格式会一直是 yyyy-mm-dd 吗?
标签: python python-3.x list datetime lambda