본문 바로가기
카테고리 없음

[파이썬 심화] datetime 모듈, 날짜계산, calender 모듈 연동

by 개발자를 꿈꾸는 사람들과 함꼐 2025. 4. 11.

datetime 모듈 - 날짜와 시간의 중심

datetime 모듈은 파이썬에서 가장 기본적이면서 강력하게 날짜와 시간을 다룰 수 있는 도구입니다.
현재 시각 가져오기, 날짜 계산, 포맷 지정 등 대부분의 작업이 이 모듈 하나로 가능합니다.

1. 현재 날짜 및 시각 가져오기

from datetime import datetime

now = datetime.now()
print("현재 시각:", now)

해석:

      
  • datetime.now()는 시스템 기준의 현재 날짜와 시간을 반환합니다.
  •   
  • 출력 형식: 2025-04-11 14:23:59.123456 와 같은 datetime 객체

2. 날짜 구성 요소 추출

print(now.year)   # 연도
print(now.month)  # 월
print(now.day)    # 일
print(now.hour)   # 시

datetime 객체는 속성으로 연, 월, 일, 시, 분, 초를 손쉽게 접근할 수 있습니다.
데이터 정렬, 파일 이름 생성, 로그 기록 등에 자주 사용됩니다.

3. 날짜 포맷 변경 (strftime)

formatted = now.strftime("%Y-%m-%d %H:%M:%S")
print(formatted)  # 출력: 2025-04-11 14:23:59

해석:

      
  • %Y: 4자리 연도, %m: 2자리 월, %d: 2자리 일
  •   
  • %H:%M:%S: 시:분:초 형식

사용자 정의 형식으로 날짜를 문자열로 표현할 수 있어 파일 저장명, 로그 등에 필수입니다.

4. 문자열을 datetime으로 변환 (strptime)

date_str = "2025-04-11"
date_obj = datetime.strptime(date_str, "%Y-%m-%d")
print(date_obj)

strptime()은 문자열을 datetime 객체로 변환합니다.
외부 파일이나 사용자 입력 데이터를 처리할 때 꼭 필요한 기능입니다.

날짜 계산과 시간 간격 처리 (timedelta)

datetime.timedelta는 날짜 또는 시간 간의 차이(간격)를 표현할 때 사용됩니다.
며칠 후, 몇 시간 전 등의 계산을 손쉽게 할 수 있습니다.

1. 날짜 더하기와 빼기

from datetime import timedelta

tomorrow = now + timedelta(days=1)
yesterday = now - timedelta(days=1)

print("내일:", tomorrow)
print("어제:", yesterday)

해석:
timedelta(days=1)은 하루를 의미합니다.
이 객체를 더하거나 빼면 간단하게 날짜 연산이 가능합니다.

2. 두 날짜 간 차이 계산

birthday = datetime(2025, 12, 25)
diff = birthday - now
print("크리스마스까지 남은 일수:", diff.days)

두 datetime 객체의 차이는 timedelta 객체로 반환되며,
diff.days를 통해 일수만 추출할 수 있습니다.

3. 초 단위 시간 차이

start = datetime(2025, 4, 11, 14, 0, 0)
end = datetime(2025, 4, 11, 14, 30, 0)
gap = end - start
print("경과 시간(초):", gap.total_seconds())

시간 차이를 초 단위로 계산하고 싶은 경우 total_seconds()를 활용하면 됩니다.
로깅, 타이머, 처리 시간 측정 등에서 매우 유용합니다.

time과 calendar 모듈의 활용

timecalendar 모듈은 datetime과 보완적으로 사용됩니다.
time은 초 단위 시간 처리, calendar는 요일과 달력 처리에 특화되어 있습니다.

1. time 모듈로 지연(delay) 주기

import time

print("3초 후 실행됩니다...")
time.sleep(3)
print("실행 완료!")

해석:
time.sleep(초)는 지정한 시간 동안 코드 실행을 멈춥니다.
자동화 스크립트에서 대기, 반복 간격 조절, 애니메이션 처리 등에 사용됩니다.

2. 현재 시간 측정 (timestamp)

now_timestamp = time.time()
print("유닉스 타임스탬프:", now_timestamp)

해석:
time.time()은 1970년 1월 1일부터 현재까지의 초 단위를 반환합니다.
파일 버전 관리, 로그 기록 등에 고유한 시간값으로 자주 사용됩니다.

3. calendar 모듈로 달력 출력

import calendar

print(calendar.month(2025, 4))

해석:
calendar.month(연도, 월)은 해당 월의 달력을 문자열 형태로 반환합니다.
콘솔 프로그램, CLI 달력 도구 제작에 유용합니다.

4. 특정 날짜의 요일 확인

day_index = calendar.weekday(2025, 4, 11)
weekdays = ["월", "화", "수", "목", "금", "토", "일"]
print(f"2025년 4월 11일은 {weekdays[day_index]}요일입니다.")

calendar.weekday()는 요일 인덱스(0:월 ~ 6:일)를 반환합니다.
이 값을 활용해 요일을 문자열로 출력할 수 있습니다.

 

datetime, time, calendar는 날짜와 시간을 자동으로 처리할 수 있는 파이썬의 강력한 도구입니다.
파일 이름에 날짜 넣기, 주기적 알림 설정, 로그 시간 기록 등 자동화 작업에서 필수적인 기능입니다.

이번 글에서 배운 날짜 계산, 포맷팅, 달력 출력 등을 활용해 여러분만의 시간 기반 프로그램을 만들어보세요!
다음 단계로는 pytzdateutil 같은 타임존 처리 라이브러리도 함께 배워보는 것을 추천합니다.