파이썬에서 날짜와 시간을 다뤄보고자 한다. 파이썬은 datetime 패키지를 제공한다. datetime 패키지를 사용할 때 필수적으로 파악해야 할 사항을 정리한다.

1. 모듈 불러오기

먼저 datetime 모듈을 불러와야 한다. 아래와 같이 간단하게 import 할 수 있다.

1
import datetime

2. 현재 날짜와 시간 얻기

현재의 날짜와 시간을 얻으려면 datetime 모듈의 now()today() 메서드를 사용하면 된다.

1
2
now = datetime.datetime.now()  # 현재 날짜와 시간
today = datetime.date.today() # 현재 날짜

3. 날짜와 시간 객체 생성

특정 날짜와 시간의 객체를 생성할 수 있다. 아래의 예를 참고하자.

1
2
3
dt = datetime.datetime(2023, 8, 8, 12, 30)  # 특정 날짜와 시간
d = datetime.date(2023, 8, 8) # 특정 날짜
t = datetime.time(12, 30) # 특정 시간

4. 날짜와 시간 포맷팅

strftime 메서드를 사용하여 날짜와 시간을 문자열로 포맷할 수 있다. 예를 들어:

1
formatted = now.strftime("%Y-%m-%d %H:%M:%S")  # 날짜와 시간을 문자열로 포맷

5. 문자열을 날짜로 변환

문자열을 날짜 객체로 변환할 때는 strptime 메서드를 사용한다.

1
dt_from_string = datetime.datetime.strptime("2023-08-08", "%Y-%m-%d")  # 문자열을 날짜로 변환

6. 시간 차이 계산

timedelta 클래스를 사용하여 두 날짜 사이의 차이를 계산할 수 있다.

1
2
delta = datetime.timedelta(days=5)  # 시간 차이 객체 생성
future_date = now + delta # 현재 날짜에 5일 추가

7. 시간대 처리

시간대를 다루기 위해 pytz 라이브러리를 사용할 수 있다. 예를 들어 서울 기준 시간대를 다음과 같이 설정할 수 있다.

1
2
3
import pytz
timezone = pytz.timezone("Asia/Seoul") # 특정 시간대 설정
localized_dt = timezone.localize(now) # 현재 시간에 시간대 정보 추가

8. datetime 객체의 주요 프로퍼티

datetime 객체는 다음과 같은 주요 프로퍼티를 가지고 있다:

  • year: 연도
  • month: 월
  • day: 일
  • hour: 시
  • minute: 분
  • second: 초
  • microsecond: 마이크로초
  • tzinfo: 시간대 정보

프로퍼티의 범위

  • year: 1부터 9999까지
  • month: 1부터 12까지
  • day: 1부터 해당 월의 마지막 날까지 (예: 2월은 28일 또는 29일)
  • hour: 0부터 23까지
  • minute: 0부터 59까지
  • second: 0부터 59까지
  • microsecond: 0부터 999999까지

범위 체크 방법

각 프로퍼티의 값이 유효한 범위 내에 있는지 체크하는 간단한 방법으로, 생성할 때 예외 사항이 발생하는지를 판단하면 된다.

1
2
3
4
5
6
7
8
9
def is_valid_date(year, month, day):
try:
datetime.date(year, month, day)
return True
except ValueError:
return False

print(is_valid_date(2023, 2, 29)) # False (2023년은 윤년이 아님)
print(is_valid_date(2024, 2, 29)) # True (2024년은 윤년)

위의 함수는 주어진 연도, 월, 일이 유효한 날짜인지 판단하는 데 사용할 수 있다.

마무리

이처럼 datetime 패키지는 날짜와 시간을 다루는 데 매우 유용한 도구이다. 위의 기본적인 사용법을 숙지하고 나면, 다양한 상황에서 날짜와 시간을 효과적으로 관리할 수 있을 것이다.