Python - 표준 모듈(date, time)을 이용하여 라이브러리(library) 활용하기 - 2

반응형

해당 글은 글과 라이브러리 활용하기 1번 글과 이어진 내용이며,

이번 포스팅에서는 표준 모듈인 date와 time을 다룹니다. (datetime)

'표준 모듈(date)을 이용하여 라이브러리(library) 활용하기 - 1'  이전글 보러가기

 

표준 모듈(random)을 이용하여 라이브러리(library) 활용하기 - 1

# 라이브러리란? 특정 기능을 수행하기 위해 여러 데이터(함수, 클래스, 모듈 등)들을 모아놓은 집합 프로그래밍에서는 주로 소스코드의 집합으로 이해하면 쉬움 # 라이브러리의 장점 누구나 쉽

luvris2.tistory.com

 

# 표준 모듈 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일이 지남을 확인
반응형