Я пытаюсь найти ближайшую дату в списке дат на текущую дату. Я нашел несколько примеров поиска ближайшей даты в списке, но все они позволяют возвращать дополнительную дату.
Список даты и времени имеет следующую форму:
datelist =
[datetime.datetime(2019, 12, 31, 0, 0),
datetime.datetime(2020, 1, 10, 0, 0),
datetime.datetime(2020, 1, 20, 0, 0),
datetime.datetime(2020, 1, 31, 0, 0),
datetime.datetime(2020, 2, 10, 0, 0),
datetime.datetime(2020, 2, 20, 0, 0)]
До сих пор я реализовывал следующую функцию, чтобы найти ближайшую дату;
def nearest_ind(items, pivot):
'''
Find the nearest value to the given value (the pivot) in a list.
'''
time_diff = np.abs([date - pivot for date in items])
return time_diff.argmin(0)
Но это возвращает дату, ближайшую к текущей, половину времени, когда возвращается самая близкая дата в будущее. Я также пытался реализовать функцию numpy searchsorted, но, похоже, она всегда возвращает ближайшую будущую дату, независимо от того, выбираю ли я «right» или «left» для параметра side, следующими способами:
np.searchsorted(datelist, datetime.datetime.now(), side='right')
np.searchsorted(datelist, datetime.datetime.now(), side='left')
Функция поиска с сортировкой numpy возвращает (если бы я должен был выполнить это сегодня, 7 февраля 2020 г.) 4 (что соответствует datetime.datetime (2020, 2, 10, 0, 0)) в любом случае. Кто-нибудь знает способ гарантировать, что самая близкая дата в прошлом всегда возвращается?