파이썬(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