Datetime 패키지 이해하기
Python에서 기본적으로 제공하는 Datetime 패키지에 대해 이해해 본다.
- Datetime 모듈은 date와 time에 대한 조작을 위해 사용된다.
Datetime 모듈 예시
1. naive vs aware
- 해당 패키지에서 사용되는 날짜/시간 객체는 timezone 포함 여부에 따라 naive와 aware로 구분된다.
- naive : tzinfo 정보를 포함하지 않는 날짜, 시간 객체
- aware : tzinfo, DST(daylight saving time) 정보를 포함한 날짜, 시간 객체
- 활용 1) 들어오는 datetime 값 (aware인지 naive인지)에 대한 형태 정의
- 활용 2) tzinfo 체크 및 시간대 변경
- 활용 3) tzinfo 존재 여부로 naive인지 aware인지 판별 가능
2. date 모듈
- datetime 하위 모듈로 주로 연도/월/일 을 다루는데 사용
- 기본 선언형 : date(year, month, day)
- 활용 1) date.today() : 오늘 날짜
- 활용 2) date + timedelta : 날짜 비교 등
- 활용 3) date.fromisoformat('20191204') -> datetime.date(2019, 12, 4) : iso 포맷 문자열 -> date 변환
- 활용 4) date.isoformat() : date -> iso 포맷 문자열 변환
- 활용 4) date.weekday() : 요일 반환
3. time 모듈
- datetime 하위 모듈로 주로 시/분/초/밀리초/타임존 등을 다루는데 사용
- 기본 선언형 : time(hour, minute, second, microsecond, tzinfo)
- 활용 1) time.isoformat() : time 의 isoformat 계산 ex) 09:10:30+09:00
- 활용 2) time.tzname(), timezone.dst() : timezone의 이름 구하기 ,
- 활용 3) time.strftime("%H:%M:%S %Z") : time 객체를 특정 형식 문자열로 표현
4. datetime 모듈
- datetime 패키지의 하위 모듈로 일반적으로 가장 많이 쓰이는 형태
- 앞선 date, time을 총괄한 연/월/일/시/분/초/밀리초/타임존을 포괄한 날짜 형태를 다루는데 사용
- 앞선 date. time의 기능등을 대부분 포괄함
- 활용 1) datetime.strptime("21/11/06 16:30", "%d/%m/%y %H:%M") : datetime 객체를 특정 형식 문자열로 표현
- 활용 2) datetime.combine(date, time) : date 객체와 time 객체 merge
- 활용 3) dateimte.isoformat() : datetime 객체를 isoformat으로 변환
- 활용 4) datetime.fromisoformat('2023-12-05T00:05:23Z') : 문자열(isoformat)을 datetime 객체로 변환 (추가 예제 링크)
- 활용 5) dateimte.now() : 현재의 날짜, 시간을 구함
- 활용 6) datetime.date(), datetime.time() : 날짜, 시간 분리
- 활용 7) datetime + timedelta : 날짜 + 시간 통합 비교
- 활용 8) datetime.timetuple(): date, time 값들을 tuple 형태로 반환 (year ~ weekday ~ dst 등)
5. timedelta 모듈
- datetime 패키지의 하위 모듈로 날짜나 시간의 차이를 구하는데 주로 사용
- 기본형 : timedelta(days, seconds, microseconds, milliseconds, minutes, hours, weeks)
- 활용 1) timedelta(days=365) : 기존 날짜에서 - 1년 전/후 계산시
6. timezone, tzinfo 모듈
timezone은 tzinfo의 subclass로
공식 Docs : https://docs.python.org/3/library/datetime.html
7. strftime(), strptime() 차이
- strftime(format) : 객체를 문자열로 변환 (date, time, datetime 모두 지원)
- strptime(date_string, format) : 문자열을 datetime 형태로 변환 (datetime 에서만 지원)
- 활용 1) date().strftime('%Y-%M-%d')
- 활용 2) strptime('2023-12-08', "%Y-%M-%d')
- 추가 format에 대한 코드 링크
8. 기타 패키지, 모듈 (dateutils)
- dateutil.relateivedelta 를 활용
- 두 날짜 시간 객체 간의 차이를 구할 수 있음.
- ex) delta = relativedelta(end_at, start_at)
참고 링크
'Python > Utils' 카테고리의 다른 글
[Utils] 파이썬 반올림 구현 (ft. 사사오입, round 함수 ) (0) | 2024.04.21 |
---|---|
[Utils] Custom Pre-commit hook 구현 (0) | 2023.06.24 |
[Python Utils] 코드 컨벤션 템플릿 셋팅 (pre-commit, black, pycharm) (0) | 2023.05.29 |
[Python Utils] Python 매직메소드 (MagicMethod) 이해하기 (0) | 2022.10.14 |
[Python Utils] Python 제너레이터 사용 (0) | 2022.08.25 |