Language/Python

[python] 가장 가까운 날짜/시간 찾기

향식이 2021. 3. 30. 15:37

 가장 가까운 날짜/시간 찾기

 

코딩을 하다 보면 시간에 대해서 많이 다루게 되는데 이 시간 데이터를 연산이나 비교 등을 할 때가 많다. 

그 중에서도 이번에는 가장 근접한 시간을 찾아야 하는데 아이디어가 떠오르지 않아 처음에는 많이 헤맸다.

 

 

 

가장 근접한 수 찾는 함수

 

먼저, 가장 근접한 수를 찾는 함수를 만들었다.

def find_nearest(array, value):
    array = np.asarray(array)
    idx = (np.abs(array - value)).argmin()
    return array[idx]

array에 시간 리스트를 넣고 value에 가장 근접했으면 하는 시간을 넣으면 근접한 시간이 return 될 줄 알았으나,,

시간 데이터는 절댓값을 쓸 수 없어 또 한 번 난관이 닥쳤다.

 

그래서 생각해 낸 게 int형식인 유닉스 시간으로 변환한 후 함수를 돌리는 것!

 

유닉스 시간이란?

유닉스 시간이란?

쉽게 이해하면 1970년 1월 1일 0시부터 시간을 초로 환산하여 정수로 나타낸 수이다.

 

original_time에 시간 데이터를 넣으면 유닉스 시간이 딱!

 

    unix_time = time.mktime(datetime.strptime(original_time, '%Y-%m-%d %H:%M').timetuple())

 

이렇게 변환한 다음에 find_nearest 함수에 넣으면 가장 근접한 수를 찾을 수 있다.

 

이를 다시 일반 시간 형태로 바꿔주면 끝:)

 

original_time = datetime.fromtimestamp(unix_time).strftime('%Y-%m-%d %H:%M')

 

 

수정 )))

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

이렇게 해도 된다고 한다. 

반응형