查找最接近给定日期的日期


问题内容

我有一个datetime对象数组,我想找到数组中哪个元素最接近给定的日期(例如datetime.datetime(2014,12,16)

这篇文章展示了如何找到 不早于给定日期 的最近 日期 。如何更改此代码,以便它可以返回给定日期之前的日期?

例如,如果数组中包含元素datetime.datetime(2014,12,10)datetime.datetime(2014,12,28),则应返回前一项,因为它的datetime.datetime(2014,12,16)绝对值最接近。


问题答案:

该函数将返回datetimeitems其最接近的日期pivot

def nearest(items, pivot):
    return min(items, key=lambda x: abs(x - pivot))

datetime如果该类型支持比较,减法和abs,例如数字和向量类型,则此函数的优点在于它不是现成的类型。