반응형
해당 글은 글과 라이브러리 활용하기 1번 글과 이어진 내용이며,
이번 포스팅에서는 표준 모듈인 date와 time을 다룹니다. (datetime)
'표준 모듈(date)을 이용하여 라이브러리(library) 활용하기 - 1' 이전글 보러가기
# 표준 모듈 date을 이용한 날짜 제어하기
- date 모듈 호출하기
- date 함수 이용시 반드시 date 모듈이 호출 된 상태여야 함
from datetime import date
# 표준모듈 datetime의 date함수 호출
- date(년, 월, 일) : 날짜를 파이썬이 이해할 수 있는 형태로 변환
date(2022, 4, 27)
>>> datetime.date(2022, 4, 27)
# 파이썬이 이해가능한 형태로 변환
- date의 속성(year, month, day) : 속성을 이용하여 '년/월/일' 중 원하는 값만 추출
some_day = date(2022, 4, 27)
print(some_day.year, some_day.month, some_day.day)
>>> 2022 4 27
# 저장된 날짜를 속성을 이용하여 년, 월, 일 차례로 출력
- weekday() : 특정 날짜의 요일 확인 (0:월, 1:화, 2:수, 3:목, 4:금, 5:토, 6일)
some_day = date(2022, 4, 27)
some_day.weekday()
>>> 2
# 2 = 수요일, 수요일임을 확인
- isoformat() : 표준 문자열 표현, 보편적으로 보기 편한 날짜 형태로 출력 (ex) 22-04-27)
some_day = date(2022, 4, 27)
some_day.isoformat()
>>> '2022-04-27'
# iso 표준 문자열로 출력
- strftime('%형식 %형식') : 날짜를 문자열로 변환하여 정해진 포맷으로 포맷팅
날짜 지정 문자열 | 의미 | 출력 예시 |
%Y | 앞의 빈자리를 0으로 채우는 4자리 연도 숫자 | 2022 |
%m | 앞의 빈자리를 0으로 채우는 2자리 월 숫자 | 04 |
%d | 앞의 빈자리를 0으로 채우는 2자리 일 숫자 | 27 |
%A | 영어로 된 요일 문자열 | Wednesday |
%B | 영어로 된 월 문자열 | April |
some_day = date(2022, 4, 27)
some_day.strftime('%Y %B %A')
>>> '2022 April Wednesday'
# 정해진 문자열로 포맷팅
# 표준 모듈 datetime을 이용한 시간 제어하기
- datetime 모듈 호출하기
- time 함수 이용시 반드시 datetime 모듈이 호출 된 상태여야 함
from datetime import time
# 표준모듈 datetime의 time 함수 호출
- time(시, 분, 초) : 시간을 파이썬이 이해할 수 있는 형태로 변환
time(16, 33, 24)
>>> datetime.time(16, 33, 24)
# 파이썬이 이해 가능한 형태로 변환
- time의 속성(hour, minute, second/microsecond) : 속성을 이용하여 '시/분/초/마이크로초' 중 원하는 값만 추출
some_time = time(16, 33, 24) # 시 분 초
print(some_time.hour, some_time.minute, some_time.second)
>>> 16 33 24
# 저장된 시간을 속성을 이용하여 시, 분, 초 차례로 출력
- strftime('%형식 %형식') : 날짜를 문자열로 변환하여 정해진 포맷으로 포맷팅
= 날짜 지정 문자열과 같이 사용 가능(같은 함수이므로)
시간 지정 문자열 | 의미 | 출력 예시 |
%p | 오전 / 오후 | AM |
%H | 24시간 형식의 2자리 숫자 | 17 |
%M | 2자리 분 숫자 | 48 |
%S | 2자리 초 숫자 | 01 |
%f | 마이크로초 | 000000 |
some_time = time(16, 33, 24)
some_time.strftime('%Y/%m/%d %p %H:%M:%S')
>>> '1900/01/01 PM 16:33:24'
# 정해진 문자열로 포맷팅
# 날짜는 정하지 않았으므로 기본 값 출력
# 표준 모듈 datetime을 이용한 날짜/시간 제어하기
- datetime 모듈 호출하기
- datetime 함수 이용시 반드시 datetime 모듈이 호출 된 상태여야 함
from datetime import datetime
# 표준모듈 datetime의 datetime함수 호출
- today() : 현재 날짜와 시간 확인 (같은 의미로 now() 함수를 사용하여도 된다.)
datetime.today()
>>> datetime.datetime(2022, 4, 27, 18, 2, 58, 423201)
datetime.now()
>>> datetime.datetime(2022, 4, 27, 18, 2, 58, 660341)
# 파이썬이 이해 가능한 형태로 변환
# 년, 월, 일, 시, 분, 초, 마이크로초 에 대한 정보가 담겨 있음
- today(=now)의 속성(date, time, isoformat, strftime) : 속성을 이용하여 '일/시간/표준문자열/문자열포맷' 중 원하는 값만 추출
today = datetime.today()
print(today.date(), today.time())
>>> 2022-04-27 18:05:26.271375
# 날짜와 시간 출력
today.isoformat()
>>> '2022-04-27T18:05:26.271375'
# 표준 문자열 출력
today.strftime("%Y-%m-%d %H:%M")
>>> '2022-04-27 11:07'
# 문자열 포맷팅
# 표준 모듈 time을 이용한 날짜/시간 제어하기
- time 모듈 호출하기
- time 함수 이용시 반드시 time 모듈이 호출 된 상태여야 함
import time
# 표준모듈 time 호출
- gmtime() : 현재 시각 확인
time.gmtime()
>>> time.struct_time(tm_year=2022, tm_mon=4, tm_mday=27, tm_hour=9, tm_min=11, tm_sec=44, tm_wday=2, tm_yday=117, tm_isdst=0)
# 파이썬이 이해 가능한 형태로 변환
- localtime() : 우리나라 기준 현재 시각 확인
time.localtime()
>>> time.struct_time(tm_year=2022, tm_mon=4, tm_mday=27, tm_hour=18, tm_min=12, tm_sec=38, tm_wday=2, tm_yday=117, tm_isdst=0)
# 파이썬이 이해 가능한 형태로 변환
- parse(문자열) : 문자열로 되어있는 날짜를 파이썬이 이해 가능한 형태로 변환
from dateutil.parser import parse
# parse를 사용하기 위한 모듈 호출
date_str = '2022-04-27'
some_day = parse(date_str)
some_day
>>> datetime.datetime(2022, 4, 27, 0, 0)
# 파이썬이 이해 가능한 형태로 변환
- relativedelta(속성) : 특정일로부터 원하는 날짜 계산
from dateutil.relativedelta import relativedelta
# relativedelta를 사용하기 위한 모듈 호출
# 오늘로부터 20일 후의 날짜는??
today = datetime.today() # 현재의 날짜 받아오기
some_day = today + relativedelta(days= +20) # 오늘로부터 20일 후의 날짜
print(today, some_day, sep='\n')
>>> 2022-04-27 11:43:00.572274
>>> 2022-05-17 11:43:00.572274
# 2022-05-22를 기준으로 1년 3개월 5일 7시간 후의 시간은?? 이 날의 요일은?
some_day = parse('2022-05-22') + relativedelta \
(years= +1, months= +3, days= +5, hours= +7)
# parameter(속성)를 이용하기
print(some_day, some_day.weekday(), sep='\n')
>>> 2023-08-27 07:00:00
>>> 6
# 숫자 6은 일요일을 의미
start_day = parse('2022-01-23')
today = date.today()
relativedelta(today, start_day)
>>> relativedelta(months=+3, days=+4)
# 3개월 4일이 지남을 확인
반응형