dateutil 모듈은 파이썬(Python)에서 제공하는 datetime 객체를 다루기 위한 여러 가지 유틸 함수를 제공한다. 이번 포스팅에서는 dateutil과 관련하여 자주 사용하는 몇 가지 함수를 알아보려고 한다.
dateutil 모듈 사용법
1) 날짜 계산 : relativedelta
a. 특정 날짜를 기준으로 과거 또는 미래 날짜 계산하기
relativedelta 객체를 이용하면 특정 날짜를 기준으로 과거 또는 미래 날짜를 계산할 수 있다. 아래 코드는 현재 시점을 기준으로 과거 또는 미래 시점을 연, 월, 일 단위로 계산한다.
from datetime import datetime
from dateutil.relativedelta import relativedelta
now = datetime.now().date()
print('현재 날짜', now)
print('작년', now+relativedelta(years=-1))
print('두달전', now+relativedelta(months=-2))
print('3일 후', now+relativedelta(days=3))
print('1년 3달 후', now+relativedelta(years=1, months=3))
b. 두 날짜의 차이 계산
relativedelta에서 첫 번째, 두 번째 인자에 datetime 객체를 넣어주면 두 날짜간 차이를 계산할 수 있다.
year, month, day = 1981, 1, 1
res = relativedelta(now, datetime(year, month, day)) ## 현재 날짜와 1981년 1월 1일과의 날짜 차이
print(f'{res.years} years, {res.months} months, {res.days} days')
2) 파싱(Parsing)
여기서 말하는 파싱(Parsing)이란 문자열로부터 날짜 패턴을 자동으로 인식하여 datetime 객체로 변환해 주는 것을 의미한다. dateutil에서 parse를 이용하여 파싱할 수 있다. parse는 문자열을 넣어주면 해당 문자열을 해석하여 datetime 객체로 변환해 준다.
from dateutil.parser import parse
print(parse('20191111231519'), type(parse('20191111231519')))
print(parse('2019-11-11 23:15:19'))
print(parse('2019/11/11'))
3) datetime 객체 시퀀스 생성 : rrule
dateutil에서 rrule을 이용하면 datetime 객체를 원소로 하는 시퀀스를 생성할 수 있다. 아래 코드는 이러한 시퀀스를 사용하는 예제이다.
아래 코드는 1987년 11월 11일을 기준으로 일 단위, 월 단위, 연 단위로 5개의 원소를 갖는 시퀀스(배열)를 생성한다. 이때 rrule은 제너레이터이므로 list로 감싸서 배열로 만들어준다.
from dateutil.rrule import rrule, DAILY, MONTHLY, YEARLY
from pprint import pprint
## 1987년 11월 11일부터 하루 단위로 datetime 객체 5개를 포함하는 리스트 생성
datetime_sequence_day = rrule(DAILY, count=5, dtstart=parse('19871111'))
## 1987년 11월 11일부터 월 단위로 datetime 객체 5개를 포함하는 리스트 생성
datetime_sequence_month = rrule(MONTHLY, count=5, dtstart=parse('19871111'))
## 1987년 11월 11일부터 연 단위로 datetime 객체 5개를 포함하는 리스트 생성
datetime_sequence_year = rrule(YEARLY, count=5, dtstart=parse('19871111'))
pprint('일 단위 시퀀스')
pprint(list(datetime_sequence_day))
pprint('월 단위 시퀀스')
pprint(list(datetime_sequence_month))
pprint('연 단위 시퀀스')
pprint(list(datetime_sequence_year))
'프로그래밍 > 기타 Python 모듈' 카테고리의 다른 글
shapely 모듈에 대해서 알아보자 - 응용편 (0) | 2023.03.30 |
---|---|
shapely 모듈에 대해서 알아보자 - 기본편 (0) | 2023.03.29 |
[XGBoost] XGBoost의 개별 트리로부터 여러 정보(변수 출현 빈도, 예측) 계산하기(feat. get_boost) (0) | 2023.03.24 |
Pyinstaller 기본 - 이용하여 파이썬(.py) 파일을 실행 파일(.exe)로 만들기 (1) | 2023.03.17 |
[오류 해결] Pyinstaller : ValueError: not enough values to unpack (expected 2, got 1) (1) | 2023.03.17 |
댓글