我的目标是从列表中找出下一个最近的日期(在将来,而不是过去)到今天的日期。为了简单起见,这个列表(格式为2017-01-31
;YYYY-MM-DD
)是本赛季的每一场足球比赛,我正在尝试创建一个脚本,部分地找到“下一个”足球比赛。在
我在因特网和堆栈溢出中搜索了答案,找到了一个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
这是我尝试改编上一篇文章的解决方案(我不太精通函数式编程,所以我可能没有正确地适应它):
^{pr2}$不管我做了什么尝试(在我的情况下这可能不是最好的,因为它改变了格式,并且我需要最终值仍然是YYYY-MM-DD
),有没有更简单的方法来实现这一点?我需要下一个游戏(最接近今天)的值,因为它将继续用于我的逻辑。所以回顾一下,从今天开始,我如何才能在我的列表中找到最近的日期,展望未来。谢谢你的帮助!在
首先,让我们使用^{} 和^{} 方法从字符串中创建
datetime.date
对象,因为datetime.date
对象是有序的,更容易使用:然后我们过滤掉将来(今天之后)发生的日期
^{pr2}$然后我们可以使用
min
找到下一个最近的日期这给了我们
举个例子
警告
如果今天之后没有日期,这将导致如下错误
{case>如果我们不想让它的值为空
最后我们可以写一个函数如下
像这样使用它
您可以:
最近的一次约会。
您可以使用相同的函数按距离从今天开始排序:
^{pr2}$从今天起,返回的名单将在几天内越来越远。如果日期在今天之前或之后,则有效。
如果只希望将来的日期,请过滤掉过去的日期。由于日期字符串是ISO 8601格式,因此可以按词法进行比较:
相关问题 更多 >
编程相关推荐