Blog Full Notice
back to main page
Ch03. (날짜) 파이썬으로 달력 만들기 네이버 블로그
motivation: 네이버 블로그
#Ch03. [날짜] 파이썬으로 달력 만들기 : 네이버 블로그
1. 프로젝트 개요
사용 라이브러리:
윤년을 확인하는 것은, calendar.isleap
strptime은 datetime이라는 날짜 자료형을 변환해주는 것. 마지막 날짜 계산
dateutil, 지나온 날짜 계산
datetime, 요일변환
2. 날짜 및 요일 계산
import datetime
day1 = datetime.date(2022, 10, 15)
day2 = datetime.datetime(2022,10,15, 16, 10,30)
day2.year day2.month day2.day day2.hour day2.minute day2.second
day = datetime.date(2022,10,15)
time = datetime.time(14,10,20)
dt = datetime.datetime.combine(day, time)
dt 하면 datetime.datetime(2022,10,15,14,10,20)
가 나온다.
datetime.date.today() 하면 오늘 날짜가 나온다.
datetime.datetime.now() 하면 오늘, 지금의 초 단위 이하 시간까지 나온다. e.g.datetime.datetime(2022,10,15,14,10,20,154222)
날짜연산은 timedelta를 사용하면 된다.
day1 = datetime.date(2022,10,15)
day2 = datetime.date(2022,11,10)
diff = day2-day1
그러면 diff는 datetime.timedelta(days=26) 형태로 나온다.
add = datetime.date.today() + datetime.timedelta(days = 40)
하면 add는 40일을 더해진 날짜가 나온다.
요일판별은 weekday로 하면 된다.
day1 = datetime.date(2022,10,14)
day1.weekday()
하면 0-6 숫자가 나오는데, 0은 월요일, 6은 일요일이다.
3. 윤년 확인 - calendar.isleap
윤년 공식은, (year % 4 == 0) and (year % 100 != 0)) or (year % 400 == 0)
이다. 윤년 확인 함수를 만들 수도 있지만, 그냥 calendar.isleap쓰자.
import calendar
calendar.isleap(2022)
calendar.isleap(2020)
calendar.leapdays(1800, 2022) 하면 이 숫자 사이의 윤년이 몇번 있는지 알려준다.
calendar.weekday(2022,10,15) 하면 요일도 반환해준다.
print(calendar.calendar(2022)) 하면
달력도 출력해준다.
4.날짜 출력 - strptime, strftime
strptime은 날짜 형식 문자열을 datetime 객체로 변환해준다. (parse time)
strftime은 날짜와 시간(datetime 객체)를 문자열로 출력해준다. (format time)
strptime
연(%Y), 월(%m), 일(%d), 시(%H), 분(%M), 초(%S)
import datetime
str_datetime = "2021-04-06 21:32:45'
currdate = datetime.datetime.strptime(str_datetime, '%Y-%m-%d %H:%M%S)
# datetime.datetime.strptime(변환하고자 하는 string, 정해놓은 포멧(양식)으로 받아오겠다)
print(currdate)
하면 datetime.datetime(2021, 4, 8, 21, 31, 48)
strftime
import datetime
now = datetime.datetime.now()
date = now.srtftime("%Y-%m-%d")
type(date) 하면 str 이 나온다.
date 하면 '2022-09-18' 이렇게 나온다.
time = now.strftime("%H:%M:%S")
type(time) #str
datetime = now.strftime("양식") #하면 datetime에 str이 저장이 된다.
5. 그 외 시간관련 - dateutil, time
dateutil - parse 함수를 통해 자동으로 날짜 형식을 찾아서 datetime 객체로 변환함
strptime은 문자열을 datetime 객체로 바꿀 수 있었는데, 문제는 strptime은 사람이 문자열 중의 날짜 형식을 지정을 해줘야 했다.
근데 dateutil 함수는 그냥 알아서 parsing해준다.
date = "2022-10-15"
from dateutil.parser import parse
parse(date) # 하면 자동으로 datetime객체를 반환해준다. strptime은 직접 format을 지정해줘야 했는데.
datetime객체 = parse("Oct 15, 2022 04:05:32 PM")
어떤 날짜와 다른 문자열이 섞여 있는 문자열이라고 하자. 그럼
parse("날짜와 다른 무관심한 정보가 섞여있는 어떤 문자열", fuzzy=True)
라고 적어주면, 알아서 datetime객체를 만들고 return해준다.
time, 프로그램의 실행 경과 시간, 프로그램 대기 시간 등을 만들 때 주로 사용한다.
사용목적: 1. 프로그램의 실행 경과 시간 측정 2. 프로그램을 다른 작업이 끝날 때까지 강제적으로 대기시키고 싶을 때
import time
time.time() # 현재 시스템 시간을 출력한다.
time.ctime() # 문자형 시간 출력
time.sleep(3) # 3초동안 프로그램 대기
start_time = time.time()
#어떤 프로그램
end_time = time.time()
elapsed_time = end_time - start_time
하면 경과된 시간 알 수 있다.
6. 프로젝트 실습
위에 있는 함수들을 사용해서, 년, 월을 치면 달력을 출력해주는 함수를 만들 수 있다.
윤년 판별 함수
마지막 날짜 계싼
지나온 날짜 계산
요일 반환
달력 확인
형식으로 만들면 된다.
댓글남기기