파이썬
표준 라이브러리
날짜/시간 - datetime
기본 사용법

파이썬 datetime 모듈: timedelta, timezone, tzinfo 사용법

날짜와 시간을 다루는 것은 모든 개발자들의 데일리 작업이라고 해도 과언이 아닌 일상적인 작업입니다. 특히 시간에 민감한 데이터, 스케줄링 또는 로깅을 다룰 때 더욱 그렇습니다.

강력한 표준 라이브러리를 갖춘 파이썬은 날짜와 시간을 효율적으로 처리할 수 있는 쉽지만 파워풀한 datetime 모듈 을 제공합니다.

이번 포스팅은 datetime 모듈과 주요 클래스 및 함수, 파이썬에서 날짜와 시간으로 작업하는 모범 사례를 포함합니다.

💡

만약, VScode에서 파이썬을 사용한다면 이 포스트를 참고하세요.

1. 파이썬 datetime 모듈 이해하기

파이썬 표준 라이브러리에 있는 datetime 모듈에는 datetime, date, time, timedelta, tzinfo 와 같은 날짜 및 시간 조작을 위한 여러 클래스가 포함되어 있습니다. 가장 일반적으로 사용되는 클래스와 메서드부터 알아보겠습니다.

1.1. datetime.datetime

이 클래스는 날짜와 시간 정보를 모두 포함한 단일 시점을 나타냅니다. 또한, 날짜와 시간 값에 접근하고 조작하기 위한 다양한 메서드와 어트리뷰트를 제공합니다.

그럼 먼저, datetime 객체를 만들어보겠습니다.

from datetime import datetime
 
# 현재 날짜와 시간
now = datetime.now()
 
print(now)
 
# 특정한 날짜와 시간
dt = datetime(2022, 9, 15, 10, 30)
 
print(dt)

이 객체로 접근할 수 있는 어트리뷰트는 다음과 같습니다.

from datetime import datetime
 
now = datetime.now()
 
print(f"연도: {now.year}")
print(f"월: {now.month}")
print(f"일: {now.day}")
print(f"시간: {now.hour}")
print(f"분: {now.minute}")
print(f"초: {now.second}")
print(f"밀리초: {now.microsecond}"

1.2 datetime.date

이 클래스는 날짜(년, 월, 일)를 나타내며 시간 정보 없이 날짜로만 작업할 수 있는 메서드를 제공합니다.

우선, date 객체를 만들어 원하는 정보를 가져오겠습니다.

from datetime import date
 
# 현재 날짜
today = date.today()
 
print(today)
 
# 특정 날짜
d = date(2022, 9, 15)
 
print(d)

1.3. datetime.time

이 클래스는 시간(시, 분, 초, 밀리초)을 나타내며 날짜 정보 없이 시간 값으로만 작업할 수 있는 메서드를 제공합니다.

time 객체를 만들어 시간 정보를 가져옵니다.

from datetime import time
 
# 특정 시간
t = time(10, 30, 15)
 
print(t)

1.4. datetime.timedelta

이 클래스는 기간을 나타내며, 일, 시간 또는 분을 더하거나 빼는 것과 같이 datetime{:python 객체로 계산하는 데 사용할 수 있는 아주 유용한 클래스입니다.

timedelta{:python 객체는 다음과 같이 만들 수 있습니다.:

from datetime import timedelta
 
# 5일 3시간 30분 기간을 변수에 선언
delta = timedelta(days=5, hours=3, minutes=30)
 
print(delta)

datetime{:pythontimedelta{:python 객체로 특정한 기간을 계산해보겠습니다.

from datetime import datetime, timedelta
 
now = datetime.now()
 
# 5일 후 계산
future = now + timedelta(days=5)
 
print(future)
 
# 3시간 전 계산
past = now - timedelta(hours=3)
 
print(past)

2. 시간대 (Time Zones) 및 UTC 시간 (UTC TIme) 으로 작업하기

datetime 모듈은 시간대 및 UTC(협정 세계시) offset 으로 작업할 수 있도록 tzinfo 의 서브 클래스인 timezone 클래스도 제공합니다. 표준 시간대를 인식하는 datetime 객체를 생성하려면 timezone 클래스와 astimezone() 메서드를 사용할 수 있습니다.

예제를 참고해주세요.

from datetime import datetime, timezone
 
# 현재 UTC 시간
utc_now = datetime.now(timezone.utc)
 
print(utc_now)
 
# 다른 시간대로 변환
from pytz import timezone
 
tz = timezone("Asia/Seoul")
local_now = utc_now.astimezone(tz)
 
print(local_now)

위의 예제에서 지정된 시간대를 처리하기 위해 외부 패키지인 pytz 라이브러리를 사용했습니다. pytz 라이브러리는 광범위한 최신 시간대 데이터베이스를 제공하므로 파이썬에서 시간대 변환을 처리하는 데 널리 사용됩니다.

3. 날짜 및 시간 서식 지정 및 구문 분석하기

datetime 모듈은 날짜와 시간을 문자열로 포맷하고 구문 분석하는 데 유용한 2가지 메서드를 제공합니다.

  • datetime.strptime(date_string, format): 이 메서드는 날짜와 시간의 문자열 표현인 date_string 과 입력 문자열에서 날짜와 시간의 구조를 지정하는 형식 문자열인 format 이라는 두 개의 인수를 받아 문자열에서 시간 정보를 받아옵니다.
  • datetime.strftime(format): 이 메서드는 출력 문자열의 원하는 구조를 지정하는 형식 문자열인 format 을 하나의 인자로 받습니다. 이 메서드는 datetime 객체에서 호출되며 지정된 형식에 따라 날짜/시간의 문자열 표현을 반환합니다.
from datetime import datetime
 
# strptime() 메서드로 문자열에서 시간 정보 읽어오기
date_string = "15-04-2023 16:30:00"
format_string = "%d-%m-%Y %H:%M:%S"
date_obj = datetime.strptime(date_string, format_string)
 
print(date_obj)  # Output: 2023-04-15 16:30:00
 
# strftime() 메서드로 시간 정보를 문자열로 변환
new_format_string = "%A, %B %d, %Y at %I:%M %p"
formatted_date = date_obj.strftime(new_format_string)
 
print(formatted_date)  # Output: Saturday, April 15, 2023 at 04:30 PM

4. 파이썬에서 날짜 및 시간 작업을 위한 모범 사례

지금까지, 파이썬 datetime 모듈로 날짜/시간을 다루는 기본적인 방법에 대해 알아보았습니다. 다음은 이 모듈을 사용할 때 알아두면 유용한 모범 사례 몇 가지를 소개합니다.

  • 시간대 인식: datetime 객체를 사용해 시간대(timezone) 를 인식하는 것은 중요한 문제입니다. 서로 다른 시간대의 날짜와 시간으로 작업할 때는 항상 datetime 객체의 도움을 받아, 서머타임 혹은 현지 시차와 같은 문제를 방지하세요.
  • 시간대 변환에는 pytz 라이브러리 사용을 추천드립니다. pytz 라이브러리는 광범위한 최신 시간대 데이터베이스를 제공하므로 파이썬에서 시간대 변환을 처리하는 데 널리 사용됩니다.
  • datetime 객체를 문자열로 변환하거나 문자열에서 정보를 파싱할 때는 strftime() 메서드와 strptime( ) 메서드를 사용합니다. 이 메서드들은 파이썬에서 날짜 및 시간 문자열을 처리하는 일관성 있고 유연한 방법을 제공합니다.

5. 마치며

이 포스팅에서는 날짜와 시간 작업을 위한 주요 클래스와 함수를 포함하여 파이썬의 datetime 모듈에 대한 기본 사항을 다루었습니다. 또한 시간대 처리, 문자열로 포맷팅, 날짜 및 시간 구문 분석에 대한 모범 사례에 대해서도 설명했습니다.

이제, 더 구체적인 내용은 파이썬 공식 문서 datetime (opens in a new tab)를 참고해보길 추천합니다. 이해가 된다면, 언제나 공식 문서가 가장 좋은 가이드입니다.

특정 케이스에 대한 해결 방법은 날짜/시간 계산, 비교, 날짜/시간 변환, 날짜/시간 출력 포스트를 참고하세요.

날짜와 시간을 다루는 일은 자주 마주하는 업무이기 때문에 꼭 시간을 들여 이해하시기 바랍니다. 한 번 잘 익혀두면 앞으로 다양한 날짜 및 시간 조작 작업을 수행할 수 있는 능력을 갖출 수 있게 됩니다.

copyright for Python datetime

© 2023 All rights reserved.