소개
Python datetime
및 time
모듈에는 모두 문자열을 객체로 변환하는 strptime()
클래스 메서드가 포함되어 있습니다.
이 문서에서는 문자열을 datetime
및 struct_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을 사용하여 날짜 및 시간 문자열을 datetime
및 time
객체로 변환했습니다. 더 많은 Python 튜토리얼로 학습을 계속하세요.
Source:
https://www.digitalocean.com/community/tutorials/python-string-to-datetime-strptime