본문 바로가기
카테고리 없음

[파이썬] 문자열에서 Date Format 파싱 - datetime

by 왕 달팽이 2020. 3. 11.
반응형

문자열로 표현된 날짜 데이터를 다뤄야 할 경우가 있습니다. 문자열을 파싱해서 Date 객체로 만드는 방법에 대해서 알아보겠습니다.

파이썬에서는 'datetime' 라이브러리를 제공하고 있습니다. 'datetime' 라이브러리를 이용하면 문자열을 파싱하여 날짜 포맷에 맞는지 확인하고 해당하는 날짜 객체를 가져올 수 있습니다.

'datetime'을 이용한 예제 코드는 다음과 같습니다.

import datetime

date_string = '20191101'
date_format = '%Y%m%d'

try:
    date_obj = datetime.datetime.strptime(date_string, date_format)
    print(date_obj)
except ValueError:
    print("Incorrect data format, should be YYYYMMDD")

문자열로 표현된 date_string 변수를 %Y%m%d 포맷에 맞게 파싱하는 예제코드입니다. 이코드를 실행하면

$ python test.py
2019-11-01 00:00:00

이 결과를 얻을 수 있습니다.

만약 형식에 맞지 않은 날짜를 파싱하면 ValueError가 발생합니다. 예를 들어 20201301 같이 존재하지 않은 13월을 명시하면 파싱할 수 없어 "Incorrect data format, should be YYYYMMDD"이 화면에 출력됩니다.

날짜 포맷 디렉티브

파이썬 프로그램에서 사용할 날짜 포맷을 지정하기 위해서 다음과 같은 디렉티브들을 사용할 수 있습니다. strptime() 함수에서 각 디렉티브들에 대한 설명입니다.

Directive의미예시
%a간략한 요일 이름

Sun, Mon, ..., Sat (en_US, 영어)

So, Mo, ..., Sa (de_DE, 독일어)

%A긴 요일 이름

Sunday, Monday, ... , Satureday (en_US, 영어)

Sonntag, Montag, ... , Samstag (de_DE, 독일어)

%w번호로 표현된 요일0 (Sunday), 1 (Monday), ... , 6 (Saturday)
%d해당 월의 일자 (0으로 패딩)01, 02, 03, ... , 31
%b간략한 월 이름

Jan, Feb, ..., Dec (en_US)

Jan, Feb, ..., Dez (de_DE)

%B긴 월 이름

January, February, ... , December (en_US)

Januar, Februar, ..., Dezember (de_DE)

%m해당 년도의 숫자로 표현된 월 (0으로 패딩)01, 02, ..., 12
%y두 자리로 표현된 년도00, 01, ..., 99
%Y전체 년도1999, 2000, ..., 2019
%H0으로 패딩된 24시간00, 01, ..., 23
%I0으로 패딩된 12시간01, 02, ..., 12
%p오전 오후 표현

AM / PM (en_US)

am, pm (de_DE)

%M0으로 패딩된 분00, 01, ..., 59
%S0으로 패딩된 초00, 01, ..., 59
%f0으로 패딩된 마이크로 초000000, 000001, ..., 999999
%zUTC 기준 +HHMM, -HHMM 오프셋+0000, -0400, +1130
%Z타임존 이름UTC, EST, CST
%j오늘이 이번년도에 몇 번째 날인지 (0으로 패딩)001, 002, ..., 366
%U

이번주가 이번년도의 몇 번째 주인지(0으로 패딩)

이번 년도의 첫 번째 일요일이 00번째 주로 표현

00, 01, ..., 53
%W

이번주가 이번년도의 몇 번째 주인지(0으로 패딩)

이번 년도의 첫 번째 월요일이 00번째 주로 표현

00, 01, ..., 53
%c로케일 기준 Date/Time 표현Fri Nov 12 17:30:00 2019 (en_US)
%x로케일 기준 Date 표현01/11/2019 (en_US)
%X로케일 기준 Time 표현11:30:00 (en_US)
%%'%' 문자 표현%

이 디렉티브를 이용해서 날짜 포맷을 적당하게 지정하면 됩니다.

반응형

댓글