대부분의 강의를 보면 datetime(DateType control) 부분이 들어가있고, 블로그에도 꼭 datetime (Python Document) 라이브러리에 대한 언급이 있습니다. 그런데 강의에서 예시만 들고 있죠. ‘중요 하겠지? 근데 왜 중요하지?’ 라는 생각을 많이 했는데요.
이 함수는 제가 목표로하는 ‘누군가에게 필요한 것을 만들어보자’는 의미에서 상당히 중요한 역할을 하고 있네요. 이유는 모든 일상은 시간을 바탕으로 동작하기 때문이죠.
지금 데이터를 추출할때와 내일 추출 할때가 다르고 앞으로 무슨 일이 있는지 알고 싶어도 현재 시간을 알아야 됩니다.(예를 들어 이번주 날씨를 추출할때도 오늘과 내일 추출한 값이 다를때 내일 추출한게 맞을 확률이 높다고 생각 할 수 있죠.)
그러다 보니 저 한테는 사용 빈도가 상당히 높은 함수입니다. DateType Control 이라고 적었지만, 사실 Datatime은 날짜를 계산하는 것에 가깝다고 이야기 할 수 있습니다.
현재 시간을 확인하고 오늘 요일을 확인하고 1일 뒤, 20시간뒤 와 같은 계산을 하지요.
DateType Control Code
import datetime
now = datetime.datetime.now()
print("Current Time :", now.strftime("%Y-%m-%d %H:%M:%S"))
days = dict({1: 'monday', 2: 'tuesday', 3: 'wednesday', 4: 'thursday', 5: 'friday',
6: 'saturday', 7: 'sunday'})
print("Todays :", days[now.isoweekday()])
#timedelta : weeks, days, hours, minutes, seconds
tomorrow = now + datetime.timedelta(days=1)
if now < tomorrow:
print("Tomorrow :", tomorrow.strftime("%Y-%m-%d %H:%M:%S"))
dt_string = tomorrow.strftime("%Y-%m-%d %H:%M:%S")
dt_format = "%Y-%m-%d %H:%M:%S"
dt = datetime.datetime.strptime(dt_string, dt_format)
print('type :', type(dt))
print('Timestamp :', dt.timestamp())
print('Timezone :', dt.astimezone(tz=None))
Output
Current Time : 2024-11-11 09:23:02
Todays : monday
Tomorrow : 2024-11-12 09:23:02
type : <class 'datetime.datetime'>
Timestamp : 1731370982.0
Timezone : 2024-11-12 09:23:02+09:00
제가 왜 많이 쓰는지 몇가지 예를 들어볼까요?
첫째 데이터 분석을 할때 사용합니다. 주식이나 코인의 이동평균선을 구할때 최근 15일/30일 데이터가 필요하겠죠? 그럼 그 데이터를 추출하기 위해서 SQL을 작성하는데 날짜 기반으로 데이터가 저장되어 있으면 훨신 간단한 쿼리가 됩니다.
두번째 저는 개인적으로 스케줄에 맞춰 데이터 추출과 요약 후 전송이 가능하게 개인 시스템을 만들어놨습니다. 이 개인 시스템이 스케줄에 맞춰 데이터를 추출할때 꼭 날짜를 Tag 해놔야 합니다.
이유는 앞으로 예상하는 값(예를 들면 일기예보)이 시간에 따라 변경되면 값을 비중이나 정확도를 대략 감안할 수 있기 때문입니다.
세번째로는 지금 뭐를 해야되는지에 대한 알람을 발생시킬때 사용하는 것 같습니다. 요 부분은 좀 생각이 정리되면 브로그에 작성해 볼 수도 있겠네요.
이렇게 사용하다 보니 대부분의 코드로 인해 발생하는 로그나 데이터에 날짜를 꼭 붙입니다.