데이터 엔지니어링

패스트캠퍼스 환급챌린지 43일차: 데이터엔지니어링 초격차 강의 후기

Big Byte 2025. 5. 13. 22:32

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

파이썬 🗓️: 시간 여행의 동반자, 날짜와 시간 정복하기

 

안녕하세요, 여러분! 😊

 

지난 시간에는 예외 처리와 모듈을 통해 프로그램의 안정성을 높이고 코드를 효율적으로 관리하는 방법을 배웠습니다. 🛡️🧩 덕분에 우리는 예상치 못한 오류에도 끄떡없는 견고한 프로그램을 만들고, 코드를 깔끔하게 정리하여 재사용성을 높이는 비법을 손에 넣었죠! 이제 여러분의 코드는 더욱 튼튼하고 체계적으로 발전했을 거예요.

 

자, 이렇게 잘 다듬어진 코드 위에 이제 현실 세계의 필수 요소인 '시간'을 얹어볼 차례입니다. 🕰️ 프로그램에서 날짜와 시간을 기록하고, 계산하고, 비교하는 작업은 정말 흔하게 필요하죠. 로그 파일 기록부터 데이터 분석, 예약 시스템, 이벤트 알림까지! 시간 정보 없이는 상상하기 어려운 기능들이 많습니다.

 

그래서 오늘은 파이썬에서 날짜와 시간을 자유자재로 다루는 방법을 배울 거예요! datetime 모듈의 핵심 기능들을 중심으로 시간 여행을 떠나봅시다! 🚀

 

오늘 함께 알아볼 내용은 다음과 같습니다:

  • datetime 객체: 날짜와 시간의 모든 것!
    • 현재 날짜와 시간 얻기: datetime.now(), datetime.today()
    • 특정 날짜와 시간 생성하기
    • 날짜/시간 정보 조각내기 (년, 월, 일, 시, 분, 초)
    • 날짜/시간 예쁘게 출력하기 (strftime) 및 문자열에서 변환하기 (strptime)
  • timedelta 객체: 시간 간격 계산의 마법! 🧙‍♂️
    • 두 날짜/시간 사이의 간격 구하기
    • 특정 날짜/시간에서 시간 더하고 빼기
  • time 모듈: 시간 관련 저수준 기능 맛보기! 🤏
    • 타임스탬프 (timestamp)
    • 프로그램 실행 잠시 멈추기 (sleep)

프로그램에 생동감을 불어넣을 시간 마법, 배울 준비 되셨나요? 함께 떠나봅시다! ✨

 

datetime 객체: 날짜와 시간의 모든 것! 🌟

파이썬에서 날짜와 시간을 함께 다루고 싶다면 datetime 모듈의 datetime 클래스를 사용합니다.

import datetime # datetime 모듈을 가져옵니다.

# 1. 현재 날짜와 시간 얻기
now = datetime.datetime.now()
today = datetime.datetime.today() # now()와 거의 동일 (로컬 시간대)
print(f"지금은? {now}")
print(f"오늘은? {today}")

# 2. 특정 날짜와 시간 생성하기
specific_datetime = datetime.datetime(2024, 12, 25, 10, 30, 0)
print(f"크리스마스 아침: {specific_datetime}")

# 3. 날짜/시간 정보 조각내기
print(f"올해는 {now.year}년")
print(f"이번 달은 {now.month}월")
print(f"오늘은 {now.day}일")
print(f"지금은 {now.hour}시 {now.minute}분 {now.second}초")

# 4. 날짜/시간 형식 지정하여 출력 (strftime: string format time)
formatted_time = now.strftime("%Y년 %m월 %d일 %H시 %M분 %S초")
print(f"예쁘게 출력: {formatted_time}") # 예: 2023년 10월 27일 15시 30분 00초

# 5. 문자열로부터 datetime 객체 만들기 (strptime: string parse time)
date_string = "2023-10-27 14:30:55"
parsed_datetime = datetime.datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")
print(f"문자열에서 변환: {parsed_datetime}")

 

strftimestrptime에서 사용되는 형식 코드는 다양하니, 필요할 때마다 공식 문서를 참고하면 좋습니다! (%Y: 4자리 연도, %y: 2자리 연도, %m: 월, %d: 일, %H: 24시 기준 시, %I: 12시 기준 시, %M: 분, %S: 초 등)

 

timedelta 객체: 시간 간격 계산의 마법! 🧙‍♂️

timedelta 객체는 두 날짜 또는 시간 사이의 차이를 나타냅니다. 이를 이용해 날짜 계산을 쉽게 할 수 있어요.

import datetime

now = datetime.datetime.now()

# 1. timedelta 객체 생성
one_day = datetime.timedelta(days=1)
one_week = datetime.timedelta(weeks=1)
ten_minutes = datetime.timedelta(minutes=10)

print(f"하루: {one_day}")
print(f"일주일: {one_week}")

# 2. 날짜/시간 연산
tomorrow = now + one_day
print(f"내일 이 시간: {tomorrow}")

yesterday = now - one_day
print(f"어제 이 시간: {yesterday}")

ten_minutes_later = now + ten_minutes
print(f"10분 뒤: {ten_minutes_later}")

# 3. 두 날짜/시간 사이의 간격 계산
christmas_2024 = datetime.datetime(2024, 12, 25)
time_until_christmas = christmas_2024 - now
print(f"2024년 크리스마스까지 남은 시간: {time_until_christmas}")
print(f"총 {time_until_christmas.days}일 하고도 {time_until_christmas.seconds // 3600}시간 정도 남았어요!")

timedelta를 사용하면 "D-day 계산기"나 "만난 지 며칠" 같은 기능을 쉽게 구현할 수 있겠죠? 😉

 

time 모듈: 시간 관련 저수준 기능 맛보기! 🤏

datetime 모듈이 날짜와 시간을 객체 지향적으로 다룬다면, time 모듈은 좀 더 저수준의 시간 관련 기능을 제공합니다. 오늘은 간단히 두 가지만 살펴볼게요.

import time

# 1. 타임스탬프 (Timestamp)
# 1970년 1월 1일 0시 0분 0초 (UTC)부터 현재까지 흐른 시간을 초 단위로 나타낸 값
# 주로 시간 측정이나 로그 기록 시 사용됩니다.
current_timestamp = time.time()
print(f"현재 타임스탬프: {current_timestamp}")

# 2. 프로그램 실행 잠시 멈추기 (sleep)
print("3초 후에 다음 메시지가 출력됩니다...")
time.sleep(3) # 3초 동안 프로그램 실행을 멈춤
print("3초가 지났습니다!")

time.time()은 주로 프로그램의 특정 구간 실행 시간을 측정하는 데 유용하고, time.sleep()은 너무 빠른 반복을 피하거나 외부 API 호출 시 요청 간격을 둘 때 사용됩니다.

 

정리하며 📝

오늘은 파이썬으로 시간의 마법을 부리는 방법을 배웠습니다!

  • datetime.datetime 🌟: 현재 시간을 얻고, 특정 날짜/시간을 만들며, 원하는 형식으로 표현하거나 문자열에서 읽어올 수 있습니다.
  • datetime.timedelta 🧙‍♂️: 시간의 간격을 나타내며, 날짜와 시간을 더하거나 빼는 연산을 가능하게 합니다.
  • time 모듈 🤏: 타임스탬프를 얻거나 프로그램 실행을 잠시 멈추는 등 저수준의 시간 기능을 제공합니다.

지난 시간까지 OOP라는 뼈대 위에 예외 처리와 모듈이라는 살을 붙였다면, 오늘 배운 날짜와 시간 처리는 마치 이 구조물에 정확한 시계를 달아주는 것과 같아요. ⏰ 이제 우리의 프로그램은 시간의 흐름을 이해하고 그에 맞춰 동작할 수 있게 되었습니다.

 

오늘 배운 datetimetimedelta를 활용하면 로그 기록, 데이터 타임스탬핑, 예약 시스템 등 다양한 기능을 갖춘 더욱 실용적이고 똑똑한 프로그램을 만들 수 있을 거예요.

 

오늘도 정말 수고 많으셨습니다! 💪 다음 시간에는 또 어떤 흥미로운 파이썬의 세계로 떠나볼까요? 기대해주세요! 즐거운 코딩 여정 되시길 바랍니다! 👋

https://abit.ly/lisbva