웹사이트 검색

Python에서 문자열을 datetime 또는 time 개체로 변환하는 방법


소개

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

Python 시간 모듈에는 문자열을 struct_time() 개체로 변환하는 유사한 함수인 time.strptime()이 포함되어 있습니다.

이 문서에서는 strptime()을 사용하여 문자열을 datetimetime 객체로 변환하는 방법을 배웁니다.

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

datetime.strptime() 메서드는 형식에 의해 구문 분석된 date_string과 일치하는 datetime 개체를 반환합니다. 두 인수 모두 필수이며 문자열이어야 합니다.

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

datetime.strptime(date_string, format)

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)  # printed in default format

출력은 다음과 같습니다.

<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)  # printed in default format

출력은 다음과 같습니다.

<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 locale
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_string과 일치하는 time.struct_time() 개체를 반환합니다. >. time_string은 필수이며 두 인수 모두 문자열이어야 합니다. 형식이 제공되지 않은 경우 기본값은 다음과 같습니다.

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

이것은 ctime() 함수에 의해 반환된 형식에 해당합니다.

time.strptime() 함수의 구문은 다음과 같습니다.

time.strptime(time_string[, format])

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

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

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

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() 함수는 정의되지 않은 형식 지시문에 자리 표시자 값을 사용합니다. 형식 인수에서.

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

다음 예제는 시간 문자열을 time.struct_time() 객체로 변환하고 format 인수를 제공하지 않습니다. 즉, 기본 형식이 사용됩니다. 이 예제는 결과 객체의 값을 인쇄합니다.

import time

# default format - "%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이 제공되지 않은 경우 기본 형식으로.

format 인수를 제공하지 않으면 입력 문자열이 다음의 기본 형식과 정확히 일치하지 않으면 오류가 발생합니다.

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

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 자습서로 학습을 계속하십시오.