从列表中获取最接近的日期时间

Jua*_*blo 4 python datetime

在Python中,如果我有一个datetime和一个datetimes 列表,例如:

import datetime as dt
date = dt.datetime(1970, 1,1)

dates = [dt.datetime(1970, 1, 2), dt.datetime(1970, 1,3)]
Run Code Online (Sandbox Code Playgroud)

我怎么能得到datetime最接近的列表date

jon*_*rpe 9

您可以使用min自定义key参数:

>>> import datetime as dt
>>> date = dt.datetime(1970, 1, 1)
>>> dates = [dt.datetime(1970, 1, 2), dt.datetime(1970, 1, 3)]
>>> min(dates, key=lambda d: abs(d - date))
datetime.datetime(1970, 1, 2, 0, 0)
Run Code Online (Sandbox Code Playgroud)

减去两个datetime对象会给出一个timedelta对象:

>>> map(lambda d: abs(d - date), dates)
[datetime.timedelta(1), datetime.timedelta(2)]
Run Code Online (Sandbox Code Playgroud)

这在比较中表现得像你期望的那样.