티스토리 뷰
문자열 형태로 표현된 날짜 데이터를 파싱하여 소스코드에서 사용할 수 있는 날짜 타입으로 변환하는 파싱 방법에 대해서 알아보자. 파이썬 프로그램을 작성할 때, 사용자로부터 날짜 데이터를 입력 받을 일이 있는데, 사용자가 어떤 값을 입력 할지 모르기 때문에 검증해야 할 필요가 있다.
파이썬의 '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 변수를 date_format에 담겨있는 포맷에 맞게 파싱한다. 이 코드를 실행하면 다음과 같은 결과를 얻을 수 있다.
date_string 변수에 정합성이 맞지 않는 '20191301' 같은 문자열을 할당하면 "Incorrect data format, should be YYYYMMDD"이 화면에 출력된다. 즉, ValueError 예외를 통해서 날짜를 표현하는 문자열을 검증할 수 있다.
날짜 포맷 디렉티브
파이썬 프로그램에서 사용할 날짜 포맷을 지정하기 위해서 다음 표의 디렉티브들을 사용할 수 있다. 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 |
%H | 0으로 패딩된 24시간 | 00, 01, ..., 23 |
%I | 0으로 패딩된 12시간 | 01, 02, ..., 12 |
%p | 오전 오후 표현 |
AM / PM (en_US) am, pm (de_DE) |
%M | 0으로 패딩된 분 | 00, 01, ..., 59 |
%S | 0으로 패딩된 초 | 00, 01, ..., 59 |
%f | 0으로 패딩된 마이크로 초 | 000000, 000001, ..., 999999 |
%z | UTC 기준 +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) |
%% | '%' 문자 표현 | % |
이 디렉티브를 이용해서 날짜 포맷을 적당하게 지정하면 된다.
- Total
- Today
- Yesterday
- 화분
- 청양고추
- 상추
- Python
- 리눅스
- 텃밭
- monitoring
- okhttp
- 도커
- 베란타 텃밭
- docker
- GitHub
- 파이참
- 하둡
- linux
- 상추 재배기
- nf_conntrack
- java
- 고추
- 파이썬
- 지킬
- InterlliJ
- 깃허브
- MacOS
- hadoop
- 베란다 텃밭
- 화분 버리기
- pycharm
- 자바
- Jekyll
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |