본문 바로가기

라이브러리

파이썬(Python) datetime 사용법 정리

Python의 datetime 모듈은 시간, 날짜 및 시간대와 관련된 작업을 지원합니다. 이 모듈을 사용하면 Python에서 날짜 및 시간을 쉽게 조작하고 다양한 형식으로 표시할 수 있습니다. 이 모듈은 일반적으로 Python 응용 프로그램에서 시간을 다룰 때 가장 많이 사용됩니다.


1. datetime 기본 사용법

import datetime

# 현재 시간 가져오기
now = datetime.datetime.now()
print("현재 시간:", now)

# 날짜 및 시간 객체 생성
dt = datetime.datetime(2022, 3, 1, 12, 30, 45)
print("생성된 날짜 및 시간:", dt)

# 문자열을 날짜 및 시간으로 변환
str_date = "2022-03-01 12:30:45"
dt = datetime.datetime.strptime(str_date, "%Y-%m-%d %H:%M:%S")
print("문자열에서 생성된 날짜 및 시간:", dt)

# 날짜 및 시간 객체의 속성 접근
year = now.year
month = now.month
day = now.day
hour = now.hour
minute = now.minute
second = now.second
microsecond = now.microsecond
print(year, month, day, hour, minute, second, microsecond)

# 날짜 및 시간 객체 간의 차이 계산
delta = datetime.datetime(2022, 3, 1, 12, 30, 45) - datetime.datetime(2022, 2, 28, 11, 15, 30)
print("두 날짜 및 시간의 차이:", delta)

# 시간대 설정
import pytz
tz = pytz.timezone('Asia/Seoul')
dt = datetime.datetime(2022, 3, 1, 12, 30, 45, tzinfo=tz)
print("시간대 설정된 날짜 및 시간:", dt)

# 날짜 및 시간 포맷 지정
str_date = now.strftime("%Y-%m-%d %H:%M:%S")
print("포맷 지정된 현재 시간:", str_date)


위 예제에서는 datetime 모듈의 다양한 기능을 사용하였습니다. 각각의 예제에서는 현재 시간을 가져오고, 날짜 및 시간 객체를 생성하고, 문자열을 날짜 및 시간 객체로 변환하며, 날짜 및 시간 객체의 속성에 접근하고, 날짜 및 시간 객체 간의 차이를 계산하며, 시간대를 설정하고, 날짜 및 시간 포맷을 지정하는 등의 작업을 수행했습니다. 이러한 다양한 기능들을 이용하여 Python에서 날짜 및 시간을 쉽게 다룰 수 있습니다.

 

 

2. 주의할점

 

1) 시간대 정보 처리
datetime 모듈은 시간대 정보를 처리하기 위해 tzinfo를 제공합니다. 하지만 이 기능은 일반적으로 제대로 작동하지 않습니다. 대신 pytz 모듈과 같은 서드파티 라이브러리를 사용하는 것이 좋습니다.

 

import datetime
import pytz

# 잘못된 방법
dt = datetime.datetime(2022, 3, 1, tzinfo=pytz.timezone('Asia/Seoul'))
print(dt)

# 올바른 방법
tz = pytz.timezone('Asia/Seoul')
dt = datetime.datetime(2022, 3, 1, tzinfo=tz)
print(dt)

 

2) 시간 연산시 객체 타입 확인

datetime 모듈을 사용하여 시간 연산을 수행할 때에는 연산 결과가 datetime 객체인지 확인해야 합니다. 그렇지 않으면 예기치 않은 결과가 발생할 수 있습니다.

 

import datetime

dt1 = datetime.datetime(2022, 3, 1, 12, 0, 0)
dt2 = datetime.datetime(2022, 3, 2, 12, 0, 0)

delta = dt2 - dt1

# 잘못된 방법
result = dt1 + delta.total_seconds()

# 올바른 방법
result = dt1 + delta
print(result)


위 예제에서는 시간 연산을 수행할 때 total_seconds() 메소드를 사용하여 시간 간격을 초 단위로 변환하려고 시도합니다. 하지만 이것은 예상대로 작동하지 않습니다. 이를 해결하기 위해서는 연산 결과가 datetime 객체인지 확인하고 datetime 객체와 연산해야 합니다.

이러한 주의 사항들을 염두에 두고 datetime 모듈을 사용하면 Python에서 쉽게 날짜 및 시간을 처리할 수 있습니다.