본문 바로가기
Python

파이썬 time data 'X' does not match format '%Y-%m-%d' 에러 해결하기 (time.strptime())

by 산코디 2023. 1. 27.




안녕하세요. 오늘은 파이썬에서 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'에 대해 정리하였습니다.


그럼 오늘도 저의 작고 소중한 글을 읽어주셔서 감사합니다!




반응형