파이썬(Python) 특정 날짜의 요일 계산법(datetime 요일 계산 하는 방법) : weekday()
파이썬에서 datetime모듈을 사용하여 오늘이 무슨 요일인지 확인해보고, 특정 날짜의 요일이 무슨요일인지 확인하는 방법에 대해 알아봅니다. datetime모듈의 weekday()함수가 날짜의 요일 정보를 숫자값으로 리턴해줍니다. 0 부터 6까지 리턴하며, 0은 월요일이고, 6일 일요일입니다. weekday()함수를 사용하기 위해서는 datetime모듈을 먼저 import합니다.
오늘은 무슨 요일 입니까?
import datetime days = ['월요일', '화요일', '수요일', '목요일', '금요일', '토요일', '일요일'] a = datetime.datetime.today().weekday() print(a) print(days[a]) #실행결과 2 수요일
리스트 자료형에 월요일부터 일요일까지 담고, weekday()가 리턴하는 정수값으로 리스트 자료형의 값을 가져오면 간단하게 요일 정보를 알 수 있습니다.
그럼 특정일자의 요일정보를 확인해볼까요?
2020년 9월 12일은 무슨요일 일까요?
import datetime days = ['월요일', '화요일', '수요일', '목요일', '금요일', '토요일', '일요일'] b = days[datetime.date(2020, 9, 12).weekday()] print(b) #실행결과 토요일
함수(def)로 만들어서 유틸리티처럼 필요할때 호출하여 사용해도 되겠죠??
import datetime
def get_today_days():
days = ['월요일', '화요일', '수요일', '목요일', '금요일', '토요일', '일요일']
return days[datetime.datetime.today().weekday()]
print(f'오늘은 {get_today_days()}입니다.')
#실행결과
오늘은 수요일입니다.
import datetime
def get_days(yyyy, mm, dd):
days = ['월요일', '화요일', '수요일', '목요일', '금요일', '토요일', '일요일']
return days[datetime.date(yyyy, mm, dd).weekday()]
yyyy = 2020
mm = 8
day = 20
print(f'{yyyy}년 {mm}월 {day}일은 {get_days(2020, 8, 20)}입니다.')
#실행결과
2020년 8월 20일은 목요일입니다.
두번째 방법은 calendar모듈을 사용하여 요일을 구해봅니다. 먼저 calendar모듈을 import 해야합니다. calendar.weekday()함수를 사용하여 특정 날짜의 요일을 계산할 수 있습니다.
import calendar
def get_days(yyyy, mm, dd):
days = ['월요일', '화요일', '수요일', '목요일', '금요일', '토요일', '일요일']
return days[calendar.weekday(yyyy, mm, dd)]
yyyy = 2020
mm = 8
day = 20
print(f'{yyyy}년 {mm}월 {day}일은 {get_days(2020, 8, 20)}입니다.')
#실행결과
2020년 8월 20일은 목요일입니다.
아래와 같은 문자열을 사용해서도 요일 표기가 가능합니다.
import calendar
def get_days(yyyy, mm, dd):
return "월화수목금토일"[calendar.weekday(yyyy, mm, dd)]
yyyy = 2020
mm = 8
day = 20
print(f'{yyyy}년 {mm}월 {day}일은 {get_days(2020, 8, 20)}요일 입니다.')
#실행결과
2020년 8월 20일은 목요일 입니다.
calendar.monthrange()함수를 사용하여 년과 월의 값을 인자로 받아서 처리하면 입력받은 월의 요일 정보과 마지막 일자 정보를 튜플(tuple) 자료형 타입으로 리턴해줍니다.
import calendar
year = 2020
month = 1
val = calendar.monthrange(2020, 1)
print(type(val))
print(val)
a = "월화수목금토일"[val[0]]
print(f'{year}년 {month}월의 마지막 요일: {a}요일')
print(f'{year}년 {month}월의 마지막 일자: {val[1]}')
#실행결과
<class 'tuple'>
(2, 31)
2020년 1월의 마지막 요일: 수요일
2020년 1월의 마지막 일자: 31
calendar()함수를 사용하여 년도별 달력을 볼 수 있습니다.
import calendar print(calendar.calendar(2021))
[실행결과] 2021년 달력이 깔끔하게 출력되네요.
2021
January February March
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 1 2 3 4 5 6 7 1 2 3 4 5 6 7
4 5 6 7 8 9 10 8 9 10 11 12 13 14 8 9 10 11 12 13 14
11 12 13 14 15 16 17 15 16 17 18 19 20 21 15 16 17 18 19 20 21
18 19 20 21 22 23 24 22 23 24 25 26 27 28 22 23 24 25 26 27 28
25 26 27 28 29 30 31 29 30 31
April May June
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 4 1 2 1 2 3 4 5 6
5 6 7 8 9 10 11 3 4 5 6 7 8 9 7 8 9 10 11 12 13
12 13 14 15 16 17 18 10 11 12 13 14 15 16 14 15 16 17 18 19 20
19 20 21 22 23 24 25 17 18 19 20 21 22 23 21 22 23 24 25 26 27
26 27 28 29 30 24 25 26 27 28 29 30 28 29 30
31
July August September
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 4 1 1 2 3 4 5
5 6 7 8 9 10 11 2 3 4 5 6 7 8 6 7 8 9 10 11 12
12 13 14 15 16 17 18 9 10 11 12 13 14 15 13 14 15 16 17 18 19
19 20 21 22 23 24 25 16 17 18 19 20 21 22 20 21 22 23 24 25 26
26 27 28 29 30 31 23 24 25 26 27 28 29 27 28 29 30
30 31
October November December
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 1 2 3 4 5 6 7 1 2 3 4 5
4 5 6 7 8 9 10 8 9 10 11 12 13 14 6 7 8 9 10 11 12
11 12 13 14 15 16 17 15 16 17 18 19 20 21 13 14 15 16 17 18 19
18 19 20 21 22 23 24 22 23 24 25 26 27 28 20 21 22 23 24 25 26
25 26 27 28 29 30 31 29 30 27 28 29 30 31
Process finished with exit code 0
calendar.prmonth()함수를 사용하면 원하는 년 월을 달력만 출력할 수 있습니다.
import calendar
calendar.prmonth(2021, 1)
January 2021
Mo Tu We Th Fr Sa Su
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
[REFERENCE]
docs.python.org/ko/3/library/datetime.html?highlight=weekday#datetime.datetime.weekdaydatetime — 기본 날짜와 시간 형 — Python 3.9.1 문서datetime — 기본 날짜와 시간 형 소스 코드: Lib/datetime.py datetime 모듈은 날짜와 시간을 조작하는 클래스를 제공합니다. 날짜와 시간 산술이 지원되지만, 구현의 초점은 출력 포매팅과 조작을 위한docs.python.org
docs.python.org/ko/3/library/calendar.html?highlight=weekday#calendar.weekdaycalendar — 일반 달력 관련 함수 — Python 3.9.1 문서calendar — 일반 달력 관련 함수 소스 코드: Lib/calendar.py 이 모듈을 사용하면 유닉스 cal 프로그램과 같은 달력을 출력할 수 있으며, 달력과 관련된 유용한 추가 함수를 제공합니다. 기본적으로, 이docs.python.org

