거래소에서 전달해주는 과거 데이터의 시간정보의 형태가 거래소마다 틀립니다. 암호화폐 거래소는 주로 UTC를 많이 사용하는데요. 처리의 용이하게 하기 위하여 UTC로 들어오는 시간데이터는 KST로 변환해서 전달해주는 것이 좋습니다.

 

upbit 거래소에서 과거 tick 데이터를 구하는 url은 아래와 같습니다.

api.upbit.com/v1/trades/ticks?market=KRW-BTC

 

여기에서 받은 데이터의 json 형태는 아래와 같습니다.

 

 

이 함수에서 돌려주는 json 값 중 날짜와 시간은 utc 값입니다. 다른 거래소와의 일관성을 유지하기 위하여 이것을 kst인 +9시간 뒤로 변경하여 처리하는 방법을 정리합니다.

 

문자열 형태의 일자 시간 정보를 datetime 형태로 변경하는 함수는 strptime()입니다. 입력 데이터의 format에 맞게 인자를 넣으면 됩니다.

 

dt_tm_utc = datetime.strptime(dt_tm,'%Y-%m-%d %H:%M:%S')

 

그후 utc와 kst 차이인 9시간을 +한 일자시간을 받기 위해서는 timedeta() 함수를 사용하면 됩니다.

 

tm_kst = dt_tm_utc + timedelta(hours=9)

 

이렇게 만들어진 datetime 값을 다시 문자열로 바꾸기 위해서는 strftime()함수를 사용하면 됩니다.

 

tm_kst_str = tm_kst.strftime('%Y-%m-%d %H:%M:%S')

 

tm_kst_str에는 날짜와 시간이 공백으로 구분된 문자열이 저장되어 있습니다. 여기에서 split() 함수를 사용하여 날짜와 시간을 분리하면 됩니다. 

 

from datetime import datetime, timedelta
trade_date_utc = 	"2020-12-26"
trade_time_utc =	"17:50:17"

# 일자 + 시간 문자열 만든다.
dt_tm = trade_date_utc + ' ' + trade_time_utc

# datetime 값으로 변환
dt_tm_utc = datetime.strptime(dt_tm,'%Y-%m-%d %H:%M:%S')

# +9 시간
tm_kst = dt_tm_utc + timedelta(hours=9)

# 일자 + 시간 문자열로 변환
tm_kst_str = tm_kst.strftime('%Y-%m-%d %H:%M:%S')

# 공백으로 일자/시간 나누기
tm = tm_kst_str.split(' ')

# kst 기준 날짜/시간을 구한다.
trade_date_kst = tm[0]
trade_time_utc = tm[1]
print(dt_tm_utc)
print(trade_date_kst, trade_time_utc)

print('')

 

 

그 결과는요..

 

 

변환이 잘 되었군요.

 

반응형

설정

트랙백

댓글