Найти ближайшую дату к данной дате

Сортировка в Swift 2.0 Демо-ссылка , изменение синтаксиса из «sorted (myArray, {})» на «myArray.sort ({})». Расширяемый протокол.

let myArray = ["Step 6", "Step 12", "Step 10"]
let sortedArray = myArray.sort({ x, y in
    return x.localizedStandardCompare(y) == NSComparisonResult.OrderedAscending
})

dump(sortedArray)

Swift 1.2 Demo

29
задан Community 23 May 2017 в 12:26
поделиться

5 ответов

Эта функция будет возвращать datetime в items, которая является ближайшей к дате pivot.

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

Хорошая часть, эта функция работает с типами, отличными от datetime, даже если тип поддерживает сравнение, вычитание и abs, например, числа и векторные типы.

64
ответ дан Tamas Hegedus 23 May 2017 в 12:26
поделиться

Как ответили на этой ссылке ссылка, функция «усечь» для вас.

df.truncate(before='2012-01-07')

Или вы можете использовать get_loc с «ближайшей» опцией.

df.iloc[df.index.get_loc(datetime.datetime(2016,02,02),method='nearest')]
20
ответ дан Community 23 May 2017 в 12:26
поделиться
def nearestDate(base, dates):
    nearness = { abs(base.timestamp() - date.timestamp()) : date for date in dates }
    return nearness[min(nearness.keys())]
1
ответ дан 3442 23 May 2017 в 12:26
поделиться

Мое решение найти ближайший индекс вместо значения

def nearest_ind(items, pivot):
    time_diff = np.abs([date - pivot for date in items])
    return time_diff.argmin(0)
1
ответ дан Lorenzo Meneghetti 23 May 2017 в 12:26
поделиться

Чтобы найти ближайшую дату и возвращают временную дельту (разницу между двумя датами), я сделал следующее:

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

Это может быть полезно, когда у вас есть минимальный порог близости для вашего приложения, как я.

1
ответ дан Mark Matthews 23 May 2017 в 12:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: