시간 관련 해결방안

SA Jung·2022년 9월 27일
1

Python 함수 정리

목록 보기
3/7

datetime 라이브러리를 이용하면 시간을 보다 쉽게 다룰 수 있다.
특정 날짜와 오늘 날짜의 차이를 알 수도 있고, 오늘 날짜에 일 수를 더해서 특정 날짜를 알 수 있는 등의 날짜 연산이 가능하게 된다.
코딩테스트를 준비면서 혹은 추후에 datetime 라이브러리를 쓰게 되는 경우를 대비하여 datetime 라이브러를 정리하고자 한다.

1) datetime

1. datetime 라이브러리 import하기

import datetime
 # 위와 같이 datetime 라이브러리를 import하면 datetime.datetime으로 함수를 호출해야한다.
 
from datetime import datetime
 # 위와 같이 from을 이용한다면 datetime을 바로 호출하여 함수를 사용할 수 있다.

2. 오늘 날짜와 시간정보 얻기

  • 오늘 날짜를 얻어오기 위해서는 today(), now()를 통해서 현재의 날짜와 시간정보를 쉽게 얻어올 수 있다.
today = datetime.today()
 # 2022-09-27 23:31:59.291222
now = datetime.now()
 # 2022-09-27 23:31:59.291222

3. 특정 날짜 및 시간정보 얻기

  • 특정날짜를 얻어오기 위해서는 최소 입력조건으로 날짜(year,month,day)는 입력하고 date함수를 사용해야 에러가 발생하지 않으며, 시간 정보는 따로 입력하지 않으면 00:00:00으로 default 설정된다.
date = datetime(2022,5,16)
 # 2022-05-16 00:00:00

4. 날짜 및 시간정보만 추출하기

  • 날짜와 시간 정보만을 얻기 위한 함수로는 날짜정보는 date(), 시간정보는 time()을 이용할 수 있다.
only_date = now.date()
 # 2022-09-27 
only_time = now.time()
 # 23:31:59.291222

5. 날짜 및 시간정보 문자열 반환하기 - strftime()

  • strftime() 메서드를 이용하면 특정 날짜 및 시간 정보의 문자열을 반환하여 쉽게 str형식으로 만들 수 있다.
today = datetime.today()
# 2022-09-27 23:31:59.291222
 
 y_m_d = today.strftime('%Y.%m.%d')
 # 2022.09.27
 print (type(y_m_d))
 # <class 'str'>
  • 위와 같이 만든 y_m_d에 담긴 날짜의 type은 'String'이다.
    (4번에서 .date()를 통해 얻은 날짜의 type은 'datetime.date'이다.)
 print (today.strftime('오늘은 %Y년 %m월 %d일입니다.'))
 # 오늘은 2022년 09월 27일입니다.
print (today.strftime('24시간 표기 : %H, 12시간 표기 : %I'))
 # 24시간 표기 : 23, 12시간 표기 : 11
print (today.strftime('%H시 %M분 %S초'))
 # 23시 31분 59초
print (today.strftime('%I시 %M분 %S초'))
 # 11시 31분 59초
 print (today.strftime('%A,%a'))
 # Tuesday,Tue
  • 간편하게 yy-mm-dd 형태의 문자열로 쉽게 변환해주는 함수도 존재한다.
today.isoformat()
# '2022-09-27'

6. date 클래스를 이용한 문자열을 datetime 객체로 변환하기

from datetime import date
date.fromisoformat('2022-09-27')
# datetime.date(2022, 9, 27)

2). timedelta

  • datetime으로 만든 두 객체에서 연산을 하게 되면 날짜의 차이를 알 수 있는데, 그 날짜 및 시간의 정보는 timedelta로 저장된다.

1. timedelta 라이브러리 import하기

from datetime import datetime, timedelta

2. 날짜 및 시간 연산하기

  • 날짜
date2 = datetime(2022, 9, 27)
date1 = datetime(2022, 9, 16)
print (date2)
# 2022-09-27 00: 00: 00
print (date1)
# 2022-09-16 00: 00: 00

date2_1 = date2-date1
print(date2_1)
# 11 days, 0: 00: 00
  • 시간
year, month, day = 2022, 9, 27
time2 = datetime(year, month, day, hour=18, minute=59)
time1 = datetime(year, month, day, hour=5, minute=41)
print (time2)
# 2022-09-27 18: 59: 00
print (time1)
# 2022-09-27 05: 41: 00

time2_1 = time2-time1
print(time2_1)
# 13:18:00

print(time2_1.seconds)
# 47880 (=47880초)

print(f"분으로 변환 : {time2_1.seconds//60}분")
print(f"시간으로 변환 : {time2_1.seconds/3600}시간")

3. timedelta를 이용한 특정날짜 및 시간 구하기

timedelta(days=10, hours=13, minutes=30)
# datetime.timedelta(days=10, seconds=48600)

now = datetime.now()
t = timedelta(days=10, hours=13, minutes=30)
print (now)
# 2022-09-27 23:31:59.291222
print (now+t)
# 2022-10-08 13:01:59.291222
  • 위와 같이 timedelta 클래스는 days, hours, minutes 뿐만 아니라 weeks 연산도 가능하다.
profile
Tomorrow will be better than yesterday :)

0개의 댓글