ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [datetime] 파이썬 datetime 패키지를 이용해 날짜 형식 변환 또는 추출하기
    Python/파이썬 기초 2023. 5. 23. 13:20
    반응형

    파이썬 datetime 패키지를 이용해 날짜 형식 변환 또는 추출하기


    엑셀 등의 프로그램에서는 YYYY-MM-DD 형식으로 날짜를 적으면 셀 양식에 따라 날짜임을 자동으로 인식해서 보여주는 기능이 있습니다. 파이썬(Python)에는 이러한 기능이 없고, 날짜를 별도의 자료형으로 처리하는데, 이는 내장 패키지인 datetime을 이용합니다. 이번에는 datetime 패키지를 이용해서 날짜 형식을 변환하거나 추출하는 방법을 알아보도록 하겠습니다.

     

     

    엑셀의 형식별 표현방법

     

     

    datetime 패키지의 datetime 모듈(이름이 같아서 헷갈리니 주의)을 이용하면 날짜 자료형을 다루거나 변환을 할 수 있습니다. 예를 들어서, 특정 형식의 날짜를 datetime 자료형으로 바꾸고 싶다면 datetime.strptime 함수를 이용하면 됩니다. 해당 함수는 날짜로 바꿀 문자열과 해당 문자열의 포맷을 적어넣으면 됩니다. 예를 들어 2023년 5월 1일을 표현하고 싶을 때는 아래와 같이 적어넣을 수 있습니다.

     

     

    • YYYY-MM-DD 형식의 문자열이라면 ('2023-05-01', '%Y-%m-%d') 로 입력하고,
    • MM.DD.YYYY 형식의 문자열이라면 ('05.01.2023', '%m.%d.%Y') 로 입력합니다

     

     

    이 때, 연월일 또는 시간을 표현할 때 아래와 같이 규칙을 정해주면 됩니다.

     

     

    • 연도: %Y
    • 월: %m
    • 일: %d
    • 시: %H
    • 분: %M
    • 초: %S

     

     

    위의 예시에 해당되는 변환값은 아래와 같이 파이썬 코드로 표현할 수 있습니다.

     

     

    # 패키지 불러오기
    from datetime import datetime
    date = datetime.strptime('2023-05-01', '%Y-%m-%d')
    date
    datetime.datetime(2023, 5, 1, 0, 0)

     

    date = datetime.strptime('05.01.2023', '%m.%d.%Y') 
    date
    datetime.datetime(2023, 5, 1, 0, 0)

     

     

    이렇게 datetime 자료형으로 변환한 문자열은 날짜 기반의 연산이 가능하게 됩니다. 예를 들어, 2023년 5월 1일과 2022년 4월 1일 사이의 날짜 차이를 알아보고 싶다면 아래와 같이 계산할 수 있지요.

     

     

    x = datetime.strptime('05.01.2023', '%m.%d.%Y')
    y = datetime.strptime('04.01.2022', '%m.%d.%Y')
    x - y
    datetime.timedelta(days=395)

     

     

    파이썬 datetime 날짜 계산을 한 뒤, 이를 다시 문자열로 변환하고 싶을 때가 있습니다. datetime 자료형은 기본적으로 문자열과의 호환성이 있기 때문에 강제로 자료형 변환을 한다면 문자열로 해당 결과물을 얻어낼 수 있습니다. 예를 들어, 위에서 2023년 5월 1일을 datetime 자료형으로 변환한 date를 문자열로 바꾸고 싶다면 아래와 같이 코드를 실행하면 됩니다.

     

     

    str(date)
    '2023-05-01 00:00:00'

     

     

    이 때는 YYYY-MM-DD HOUR:MIN:SEC 형태로 문자열이 반환되는 것을 확인할 수 있습니다. 만약 다른 형태로 데이터를 추출하고 싶을 때는 위 결과를 문자열 처리를 통해 입맛에 맞도록 형태를 변환할 수 있지만, datetime 모듈의 strftime 함수를 사용한다면 조금 더 편리한 날짜 추출이 가능합니다. 해당 함수는 문자열로 원하는 반환값의 형태를 지정해 주면 됩니다.

     

     

    date.strftime('%Y-%m-%d')
    '2023-05-01'
    반응형

    댓글

문의: jwkang3929@naver.com