Python에서 문자열을 날짜/시간으로 구문 분석하는 방법(strptime)

Python에서 문자열을 날짜/시간 객체로 변환하는 방법을 알아보세요. strptime 방법을 익히고, 날짜 문자열을 구문 분석하고, 시간대를 처리하고, 형식 오류를 방지하세요.

Editor에서 이 솔루션을 사용해 보세요.

개요

사용자 양식 제출을 처리하고, 웹 데이터베이스를 스크랩하고, 서버 로그를 구문 분석하고, CSV 시트를 가져오는 애플리케이션을 구축할 때 날짜 및 시간 정보를 원시 텍스트 문자열(예: `"2026-05-25 15:45"`)로 자주 수신하게 됩니다. 계산, 날짜 연산 또는 문자열 정렬을 수행할 수 없으므로 이를 Python datetime 객체로 구문 분석해야 합니다.

이 변환의 기본 방법은 `datetime.strptime(date_string, format_string)`입니다. 이름은 "문자열 구문 분석 시간"을 나타냅니다. 이 함수는 원시 날짜 문자열과 지시문이 포함된 형식 템플릿(예: 연도는 `%Y`, 월은 `%m`, 일은 `%d`)을 사용하여 해당 날짜/시간 객체를 반환합니다.

입력 문자열이 제공된 형식 템플릿과 정확히 일치하지 않으면 Python은 `ValueError`를 발생시킵니다. 충돌을 방지하려면 항상 `strptime()` 작업을 `try-Exception` 블록에 래핑하세요. 다양하고 구조화되지 않은 날짜 입력을 구문 분석하는 애플리케이션의 경우 `python-dateutil`과 같은 외부 라이브러리가 파서 감지를 자동화하는 데 도움이 될 수 있습니다.

코드 및 실행 출력

이 스크립트는 datetime.strptime을 사용하여 날짜 문자열을 구문 분석하고, 잘못된 입력을 처리하고, 날짜 차이를 계산하는 방법을 보여줍니다.

from datetime import datetime

# 1. Basic parsing using strptime
date_str = "2026-05-25 18:30:00"
format_template = "%Y-%m-%d %H:%M:%S"

parsed_date = datetime.strptime(date_str, format_template)
print("Parsed DateTime:", parsed_date)
print("Month parsed:", parsed_date.month)
print("Hour parsed:", parsed_date.hour)

# 2. Handling parse errors safely
bad_date_str = "25/05/2026"
try:
    datetime.strptime(bad_date_str, "%Y-%m-%d")
except ValueError as e:
    print(f"\nParse Error: {e}")

# Correcting the format
corrected_date = datetime.strptime(bad_date_str, "%d/%m/%Y")
print("Corrected Parse:", corrected_date.date())
터미널 출력
Parsed DateTime: 2026-05-25 18:30:00
Month parsed: 5
Hour parsed: 18

Parse Error: time data '25/05/2026' does not match format '%Y-%m-%d'
Corrected Parse: 2026-05-25

단계별 구현

  • datetime 모듈에서 datetime 클래스를 가져옵니다.
  • 날짜 문자열의 정확한 구조를 식별합니다(예: 일, 월, 구분 기호).
  • 적절한 지시어(예: %Y, %m, %d)를 사용하여 datetime.strptime(date_string, format_pattern)을 호출하세요.
  • 잘못된 문자열을 정상적으로 처리하려면 구문 분석 문을 try-Exception ValueError 블록으로 래핑하세요.

자주 묻는 질문

strftime과 strptime의 차이점은 무엇입니까?

strptime(문자열 구문 분석 시간)은 문자열을 구문 분석하여 날짜/시간 객체를 생성합니다. strftime(문자열 형식 시간)은 날짜/시간 객체를 읽을 수 있는 문자열 표현으로 형식화합니다.

ISO 8601 날짜 문자열(예: "2026-05-25T18:30:00Z")을 어떻게 구문 분석하나요?

Python 3.7+에서는 수동 형식 템플릿 없이도 ISO 문자열을 효율적으로 처리하는 내장된 datetime.fromisoformat(string) 함수를 사용할 수 있습니다.

관련 주제

권장 Python 리소스

관련 대화형 튜토리얼, 치트 시트, 코드 비교를 통해 지식을 확장하세요.