파이썬에서 문자열을 날짜 또는 시간 객체로 변환하는 방법

소개

Python datetimetime 모듈에는 모두 문자열을 객체로 변환하는 strptime() 클래스 메서드가 포함되어 있습니다.

이 문서에서는 문자열을 datetimestruct_time() 객체로 변환하기 위해 strptime()을 사용합니다.

DigitalOcean 앱 플랫폼을 사용하여 GitHub에서 Python 애플리케이션을 배포하세요. DigitalOcean이 앱의 확장에 집중하도록 하세요.

datetime.strptime()을 사용하여 문자열을 datetime 객체로 변환하기

datetime.strptime() 메서드의 구문은 다음과 같습니다:

datetime.strptime(date_string, format)

datetime.strptime() 메서드는 format에 의해 파싱된 date_string과 일치하는 datetime 객체를 반환합니다. 두 인수 모두 필요하며 문자열이어야 합니다.

datetime.strptime()에서 사용된 형식 지시문에 대한 자세한 내용은 Python 문서의 strftime()strptime() 형식 코드를 참조하십시오.

문자열을 datetime.datetime() 객체로 변환하는 예제

다음 예제는 날짜 및 시간 문자열을 datetime.datetime() 객체로 변환하고 결과 객체의 클래스 이름과 값을 출력합니다:

from datetime import datetime

datetime_str = '09/19/22 13:55:26'

datetime_object = datetime.strptime(datetime_str, '%m/%d/%y %H:%M:%S')

print(type(datetime_object))
print(datetime_object)  # 기본 형식으로 출력

출력 결과는 다음과 같습니다:

<class 'datetime.datetime'>
2022-09-19 13:55:26

문자열을 datetime.date() 객체로 변환하는 예제

다음 예제는 날짜 문자열을 datetime.date() 객체로 변환하고 결과 객체의 클래스 유형과 값을 출력합니다:

from datetime import datetime

date_str = '09-19-2022'

date_object = datetime.strptime(date_str, '%m-%d-%Y').date()
print(type(date_object))
print(date_object)  # 기본 형식으로 출력

출력 결과는 다음과 같습니다:

<class 'datetime.date'>
2022-09-19

문자열을 datetime.time() 객체로 변환하는 예제

다음 예제는 시간 문자열을 datetime.time() 객체로 변환하고, 결과 객체의 클래스 유형 및 값 출력하는 예입니다:

from datetime import datetime

time_str = '13::55::26'
time_object = datetime.strptime(time_str, '%H::%M::%S').time()
print(type(time_object))
print(time_object)

출력은 다음과 같습니다:

<class 'datetime.time'>
13:55:26

로케일 예제와 함께 문자열을 datetime.datetime() 객체로 변환

다음 예제는 독일 로케일 날짜 문자열을 datetime.datetime() 객체로 변환하고, 결과 객체의 클래스 유형 및 값을 출력합니다:

from datetime import datetime
import locale

locale.setlocale(locale.LC_ALL, 'de_DE')
date_str_de_DE = '16-Dezember-2022 Freitag'  # de_DE 로케일
datetime_object = datetime.strptime(date_str_de_DE, '%d-%B-%Y %A')
print(type(datetime_object))
print(datetime_object)

출력은 다음과 같습니다:

<class 'datetime.datetime'>
2022-12-16 00:00:00

입력 문자열에서 결과 객체는 요일 이름을 포함하지 않습니다. 왜냐하면 datetime.datetime() 객체에는 요일이 십진수로만 포함되기 때문입니다.

time.strptime()을 사용하여 문자열을 struct_time() 객체로 변환

time.strptime() 메서드의 구문은:

time.strptime(time_string[, format])

time.strptime() 메서드는 format에 의해 구문 분석된 time_string과 일치하는 time.struct_time() 객체를 반환합니다. time_string은 필수이며 두 인수 모두 문자열이어야 합니다. format이 제공되지 않은 경우 기본값은 다음과 같습니다:

'%a %b %d %H:%M:%S %Y'

이는 ctime() 함수가 반환하는 형식에 해당합니다.

형식 지시문은 time.strptime()time.strftime()에 대해 동일합니다. Python 문서에서 time 모듈의 형식 지시문에 대해 더 알아보세요.

제공된 형식으로 문자열을 struct_time() 객체로 변환하는 예제

다음 예제는 format 인수를 제공하여 시간 문자열을 time.struct_time() 객체로 변환하고 결과 객체의 값을 인쇄합니다:

import time

time_str = '11::33::54'
time_obj = time.strptime(time_str, '%H::%M::%S')
print("A time.struct_time object that uses the format provided:")
print(time_obj)

출력은 다음과 같습니다:

A time.struct_time object that uses the format provided:
time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1,
tm_hour=11, tm_min=33, tm_sec=54, tm_wday=0, tm_yday=1,
tm_isdst=-1)

출력에서 볼 수 있듯이, 문자열을 time.struct_time() 객체로 변환할 때, strptime() 메서드는 format 인수에 정의되지 않은 형식 지시문에 대한 플레이스홀더 값을 사용합니다.

기본 형식 예제를 사용하여 문자열을 struct_time() 객체로 변환

format 인수를 제공하지 않으면 시간 문자열을 time.struct_time() 객체로 변환할 때 기본 형식이 사용되며 입력 문자열이 기본 형식과 정확히 일치하지 않으면 오류가 발생합니다:

 '%a %b %d %H:%M:%S %Y'

다음 예제는 format 인수를 제공하지 않고 시간 문자열을 time.struct_time() 객체로 변환하고 결과 객체의 값 출력합니다:

import time

# 기본 형식 - "%a %b %d %H:%M:%S %Y"
time_str_default = 'Mon Dec 12 14:55:02 2022'
time_obj_default = time.strptime(time_str_default)
print("A time.struct_time object that uses the default format:")
print(time_obj_default)

출력은 다음과 같습니다:

A time.struct_time object that uses the default format:
time.struct_time(tm_year=2022, tm_mon=12, tm_mday=12,
tm_hour=14, tm_min=55, tm_sec=2, tm_wday=0, tm_yday=346,
tm_isdst=-1)

출력에서 볼 수 있듯이 문자열을 time.struct_time() 객체로 변환할 때 strptime() 메서드는 format 인수에 정의되지 않은 형식 지시문에 대해 자리 표시자 값을 사용하거나 format이 제공되지 않으면 기본 형식에서 사용합니다.

strptime() 오류 해결

만약 strptime()을 사용하여 제공된 형식으로 입력 문자열을 구문 분석할 수 없다면 ValueError가 발생합니다. 구문 분석 오류를 테스트하기 위해 try 블록을 사용하고 결과를 출력하기 위해 except 블록을 사용할 수 있습니다. strptime() 메서드를 사용할 때 발생하는 ValueError 메시지는 구문 분석 오류의 원인을 명확히 설명합니다. 다음 예제는 몇 가지 일반적인 오류를 보여줍니다. 추가 데이터 및 형식 불일치와 같은 것들입니다:

from datetime import datetime
import time

datetime_str = '09/19/18 13:55:26'

try:
    datetime_object = datetime.strptime(datetime_str, '%m/%d/%y')
except ValueError as ve1:
    print('ValueError 1:', ve1)

time_str = '99::55::26'

try:
    time_object = time.strptime(time_str, '%H::%M::%S')
except ValueError as ve2:
    print('ValueError 2:', ve2)

출력은:

ValueError 1: unconverted data remains:  13:55:26
ValueError 2: time data '99::55::26' does not match format '%H::%M::%S'

결론

이 튜토리얼에서는 Python을 사용하여 날짜 및 시간 문자열을 datetimetime 객체로 변환했습니다. 더 많은 Python 튜토리얼로 학습을 계속하세요.

Source:
https://www.digitalocean.com/community/tutorials/python-string-to-datetime-strptime