Python

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

Leave a Reply

error: Content is protected !!