
안녕하세요. 오늘은 파이썬에서 time.strptime() 함수를 사용하면서 발생하는 에러인 time data 'X' does not match format '%Y-%m-%d' 내용에 대해 포스팅하려고 합니다. strptime() 함수는 날짜형태의 문자열을 지정된 format에 맞춰 parsing 하는 함수이며, 날짜 형식으로 parsing하는 과정 중에 발생하는 에러입니다. 어떤 문제로 에러가 발생했으며, 어떻게 처리할 수 있는지 예제 소스 코드를 통해 알아보도록 하겠습니다.
1. 에러 발생 예제 소스 코드
import time
def task():
# strptime
str = '2023-01'
strptime = time.strptime(str, '%Y-%m-%d')
print(strptime)
if __name__ == '__main__':
task()
에러가 발생하는 소스 코드를 작성하였습니다. 예제 소스 코드는 크게 문제가 없어 보이지만 글의 주제 내용인 time data 'X' does not match format '%Y-%m-%d'가 발생하는 소스 코드입니다. 실행 결과를 먼저 보도록 하겠습니다.
실행 결과

실행 결과 동일한 에러가 발생하였습니다. 에러 내용을 자세히 보게 되면 time data '2023-01' does not match format '%Y-%m-%d'와 같이 동일한 패턴으로 에러 코드가 보이는데, 해당 내용을 통해 소스 코드를 따라가 보면 time.strptime() 함수에서 첫 번째 인자값과 두 번째 인자값이 일치하지 않아 발생했다고 해석이 됩니다.
코드 예시 : time.strptime('날짜', '포맷 패턴 코드')
에러 코드 : time.strptime('2023-01', '%Y-%m-%d')
위의 코드처럼 날짜값과 포맷 패턴 코드값이 일치하지 않았다는 내용입니다. 해당 에러는 패턴 값보다 매칭되는 날짜 값이 부족할 때 발생을 하게 됩니다. 그러면 위의 소스 코드를 살짝 수정해서 정상 처리가 될 수 있도록 변경해 보겠습니다:)
2. 정상 처리 예제 소스 코드
import time
def task():
# strptime
str = '2023-01-02'
strptime = time.strptime(str, '%Y-%m-%d')
print(strptime)
if __name__ == '__main__':
task()
위의 소스 코드에서 날짜값만 포맷 패턴에 맞춰 추가를 해줬습니다.
'2023-01' -> '2023-01-02' ( 마지막에 '-02'를 추가)
그럼 변경된 소스 코드의 실행 결과를 확인해 보겠습니다.
실행 결과

날짜값을 변경하고 정상 처리된 결과 화면입니다!
마무리
에러 원인
time.strptime('2023-01', '%Y-%m-%d')
위의 예시를 보게 되면 time.strptime('날짜', '포맷 패턴 코드')와 같이 인자값을 넘겨줄 때 날짜값과 포맷 패턴 코드값이 일치하지 않을 경우 에러 발생
포맷 패턴 코드보다 날짜값이 짧을 경우 발생
해결 방안
time.strptime('2023-01-02', '%Y-%m-%d')
포맷 패턴 코드에 맞춰 날짜값을 변경
오늘은 이렇게 time.strptime() 함수를 사용하면서 발견됐던 time data 'X' does not match format '%Y-%m-%d'에 대해 정리하였습니다.
그럼 오늘도 저의 작고 소중한 글을 읽어주셔서 감사합니다!

'Python' 카테고리의 다른 글
파이썬 다양한 자료형의 길이를 확인하는 len() 함수 알아보기 (0) | 2024.05.09 |
---|---|
파이썬의 딕셔너리 dict() 함수의 개념과 활용 (0) | 2024.05.08 |
파이썬 unconverted data remains 에러 해결하기 (0) | 2023.01.26 |
파이썬 strptime() argument 0 must be str 에러 해결하기 (0) | 2023.01.24 |
파이썬 시간 format과 parse 알아보기 (time strftime(), strptime()) (0) | 2023.01.24 |