Blog Full Notice
back to main page

2 분 소요

motivation: 네이버 블로그

#Ch03. [날짜] 파이썬으로 달력 만들기 : 네이버 블로그

Ch03. [날짜] 파이썬으로 달력 만들기

프로파일 무지성 2023. 2. 25. 16:36
URL 복사 이웃추가

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

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. 프로젝트 실습

위에 있는 함수들을 사용해서, 년, 월을 치면 달력을 출력해주는 함수를 만들 수 있다.

  1. 윤년 판별 함수

  2. 마지막 날짜 계싼

  3. 지나온 날짜 계산

  4. 요일 반환

  5. 달력 확인

형식으로 만들면 된다.

댓글남기기