본문 바로가기
python

Python datetime 모듈: 날짜와 시간 완벽 활용 가이드

by 타닥타닥 토다토닥 부부 2024. 11. 21.
반응형

Python의 datetime 모듈을 사용하여 현재 날짜와 시간 가져오기, 날짜와 시간 조작, 그리고 날짜 포맷 변환하는 방법을 자세히 알아보세요. datetime 객체와 timedelta를 활용하여 효율적인 시간 처리를 경험해보세요.

 

Python datetime 모듈: 날짜와 시간 완벽 활용 가이드

Python 개발에서 날짜와 시간은 매우 빈번하게 다루어지는 데이터 유형입니다. 데이터 로깅, 스케줄링, 보고서 생성 등 다양한 분야에서 날짜와 시간을 정확하게 처리하는 능력은 필수적입니다. Python의 내장 datetime 모듈은 이러한 요구를 충족시키는 강력하고 유연한 기능을 제공합니다. 이 가이드에서는 datetime 모듈의 핵심 기능 세 가지를 자세히 살펴보고, 실제 코드 예제를 통해 datetime 객체를 효과적으로 활용하는 방법을 안내합니다.

 

1. 현재 날짜와 시간 가져오기: datetime.datetime.now()

Python에서 현재 시스템의 날짜와 시간을 가져오는 가장 기본적인 방법은 datetime 모듈의 datetime.now() 메서드를 사용하는 것입니다. 이 메서드는 호출되는 시점의 정확한 현재 날짜와 시간 정보를 담고 있는 datetime 객체를 반환합니다. 이 datetime 객체는 연, 월, 일, 시, 분, 초, 마이크로초 등 모든 시간 구성 요소를 포함합니다.

import datetime

# 현재 시간을 datetime 형식으로 가져오기
now = datetime.datetime.now()

print(f"현재 날짜 및 시간: {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}")

 

이처럼 datetime.now()를 통해 얻은 datetime 객체를 활용하면 현재 날짜와 시간을 손쉽게 파악하고, 각 시간 구성 요소에 접근하여 필요한 정보를 추출할 수 있습니다.

 

2. 날짜와 시간 조작: timedelta 객체 활용

datetime 모듈의 또 다른 중요한 기능은 날짜와 시간 간의 연산을 수행하는 것입니다. 특정 날짜로부터 며칠 후, 혹은 몇 시간 전의 시간을 계산해야 할 때 timedelta 객체가 유용하게 사용됩니다. timedelta는 두 datetime 객체 간의 차이를 나타내거나, 특정 기간을 정의하는 데 사용됩니다. 이를 통해 날짜와 시간 조작이 매우 간편해집니다.

from datetime import datetime, timedelta

today = datetime.now()
print(f"오늘 날짜: {today}")

# 1주일 뒤 날짜 계산 (timedelta를 사용하여 날짜 더하기)
next_week = today + timedelta(weeks=1)
print(f"1주일 뒤 날짜: {next_week}")

# 3일 전 날짜 계산 (timedelta를 사용하여 날짜 빼기)
three_days_ago = today - timedelta(days=3)
print(f"3일 전 날짜: {three_days_ago}")

# 5시간 30분 뒤 시간 계산
five_hours_thirty_minutes_later = today + timedelta(hours=5, minutes=30)
print(f"5시간 30분 뒤: {five_hours_thirty_minutes_later}")

timedelta 객체는 weeks, days, hours, minutes, seconds, milliseconds, microseconds와 같은 인자를 받아 다양한 시간 단위로 날짜 계산을 수행할 수 있도록 돕습니다. 이는 스케줄링 시스템이나 이벤트 관리 등에서 날짜 조작이 필요한 경우에 특히 유용합니다.

 

3. 날짜 포맷 변환: strptime()과 strftime()

데이터를 외부 시스템과 주고받거나 사용자에게 보여줄 때, 날짜와 시간의 형식은 매우 중요합니다. datetime 모듈은 문자열과 datetime 객체 간의 날짜 포맷 변환을 위한 두 가지 강력한 메서드를 제공합니다: strptime()과 strftime().

 

3.1. strptime(): 문자열을 datetime 객체로 변환

strptime() 메서드는 특정 형식의 날짜/시간 문자열을 datetime 객체로 파싱합니다. 이는 외부에서 받아온 날짜 문자열을 Python에서 연산 가능한 datetime 객체로 변환할 때 필수적인 기능입니다.

from datetime import datetime

date_str1 = "2024-11-21"
date_str2 = "2025/01/15 14:30:00"

# "YYYY-MM-DD" 형식의 문자열을 datetime 객체로 변환
date_obj1 = datetime.strptime(date_str1, "%Y-%m-%d")
print(f"'{date_str1}' (문자열) -> {date_obj1} (datetime 객체)")

# "YYYY/MM/DD HH:MM:SS" 형식의 문자열을 datetime 객체로 변환
date_obj2 = datetime.strptime(date_str2, "%Y/%m/%d %H:%M:%S")
print(f"'{date_str2}' (문자열) -> {date_obj2} (datetime 객체)")

 

strptime() 사용 시 문자열의 형식과 일치하는 포맷 코드를 정확히 지정하는 것이 중요합니다. %Y (연도), %m (월), %d (일), %H (24시간), %M (분), %S (초) 등 다양한 포맷 코드를 사용하여 원하는 대로 문자열을 날짜 객체로 변환할 수 있습니다.

 

3.2. strftime(): datetime 객체를 특정 형식의 문자열로 변환

strftime() 메서드는 datetime 객체를 원하는 형식의 날짜/시간 문자열로 변환합니다. 이는 데이터를 출력하거나 특정 형식으로 저장해야 할 때 유용합니다.

from datetime import datetime

now = datetime.now()
print(f"현재 datetime 객체: {now}")

# "YYYY-MM-DD" 형식의 문자열로 변환
formatted_date1 = now.strftime("%Y-%m-%d")
print(f"포맷팅된 날짜 (YYYY-MM-DD): {formatted_date1}")

# "YYYY년 MM월 DD일 HH시 MM분" 형식의 문자열로 변환
formatted_date2 = now.strftime("%Y년 %m월 %d일 %H시 %M분")
print(f"포맷팅된 날짜 (한글 형식): {formatted_date2}")

# 요일 포함 (예: "목요일, 2024년 11월 21일")
formatted_date3 = now.strftime("%A, %Y년 %m월 %d일")
print(f"포맷팅된 날짜 (요일 포함): {formatted_date3}")

strftime()은 strptime()과 마찬가지로 다양한 포맷 코드를 지원하여 날짜를 문자열로 변환할 때 유연성을 제공합니다. 날짜 포맷 변환 기능을 통해 사용자가 이해하기 쉬운 형태로 날짜와 시간을 표현하거나, 특정 시스템이 요구하는 형식에 맞춰 데이터를 가공할 수 있습니다.

 

Python의 datetime 모듈은 현재 날짜와 시간 가져오기, 날짜와 시간 조작, 그리고 날짜 포맷 변환이라는 세 가지 핵심 기능을 통해 날짜/시간 데이터를 효과적으로 처리할 수 있도록 돕습니다. 이 외에도 datetime 모듈은 타임존 처리, date 및 time 객체 등 다양한 기능을 제공하여 복잡한 시간 관련 작업을 더욱 쉽게 만들어줍니다.

datetime 모듈에 대한 더 자세한 정보는 Python 공식 문서에서 확인하실 수 있습니다.

 

FAQ: Python datetime 모듈 관련 자주 묻는 질문

Q1: datetime.now()와 datetime.utcnow()의 차이점은 무엇인가요? A1: datetime.now()는 로컬 시스템의 현재 날짜와 시간을 반환하며, 시스템의 타임존 설정에 영향을 받습니다. 반면 datetime.utcnow()는 UTC(Coordinated Universal Time) 기준으로 현재 시간을 반환하며, 타임존의 영향을 받지 않습니다. 서버 환경이나 전 세계적으로 일관된 시간 처리가 필요할 때 utcnow()가 유용합니다.

 

Q2: timedelta 객체로 두 datetime 객체 간의 차이를 계산할 수 있나요? A2: 네, 두 datetime 객체를 빼면 timedelta 객체가 반환되어 두 날짜/시간 간의 차이를 나타냅니다. 예를 들어, (datetime_end - datetime_start)는 timedelta 객체를 반환합니다.

from datetime import datetime

start_time = datetime(2024, 6, 1, 10, 0, 0)
end_time = datetime(2024, 6, 5, 15, 30, 0)

duration = end_time - start_time
print(f"두 시간 사이의 차이: {duration}")
print(f"차이 (일): {duration.days}")
print(f"차이 (초): {duration.total_seconds()}")

 

Q3: strftime()과 strptime()에서 사용할 수 있는 포맷 코드는 어디서 확인할 수 있나요? A3: strftime()과 strptime()에서 사용할 수 있는 모든 포맷 코드는 Python 공식 datetime 문서의 "strftime() and strptime() Format Codes" 섹션에서 확인할 수 있습니다. %A (요일 전체 이름), %B (월 전체 이름), %j (1년 중 몇 번째 날) 등 매우 다양한 포맷 코드를 제공합니다.

 

[또다른 파이썬 기능]

 

파이썬 리스트 제일 앞에 숫자 추가하기 - python insert

파이썬 리스트 제일 앞에 추가하기 - python insertnumbers = [2, 3, 4]numbers.insert(0, 1) # 리스트의 제일 앞에 숫자 1 추가print(numbers) # 출력: [1, 2, 3, 4]   [참고] 파이썬 리스트 제일 앞에 숫자 1 더하기my_li

noanomal.tistory.com

 

반응형

댓글