Python/Python__works

calendar 를 이용해서 년-월-일 목록 뽑아내기

말하는감자 2020. 11. 19. 13:36
import calendar

calendar.calendar(2020)

 

이렇게 출력하면 -_-;;

스트링으로 된 달력(윈도우에서 보여주는 달력같은 ㅡㅡ) 이 출력됩니다.

이걸 쓰는건 좀 지저분하고 후처리가 복잡해질것 같아서 다른 방법으로 날짜 목록을 출력해보았습니다.

import calendar

month_range = []
for i range(2019, 2022): #year
	for j in range(1, 13): #month
    	final_day = calendar.monthrange(i, j)
        month_dict = dict(year=i, month=j, day=final_day[1]) # 각 달의 마지막 날짜를 체크한다
        month_range.append(month_dict)

date_list = []
for i in month_range: #년, 월, 일을 한번에
	for j in range(i, i["day"]+1): #1일에서 마지막 날짜 까지
    	# YYYY-MM-DD 형식으로 사용하기 위해서
    	month = "0" + str(i["month"]) if i["month"] < 10 else str(i["month"])
        day = "0" + str(j) if j < 10 else str(j)
        
        day_of_week calendar.weekday(i["year"], i["month"], j) #년 월 일을 이용해서 요일을 숫자로 리턴
        date_list.append(dict(date="{}-{}-{}".format(i["year"], month, day), day_of_week=day_of_week))
 
 # 완성된 2019 ~ 2021년 사이의 모든 날짜 목록을 출력
 for i in date_list:
 	print(date_list)
    

 

 

그리고 날짜 계산이 지저분해서 다시 수정

from datetime import datetime, date, timedelta
import calendar

years = datetime.today().year + 2 # 내년 달력까지 뽑아내기 위해서

start_date = date(2004, 1, 1)
end_date(years, 12, 31)
days_delta = end_date - start_date

#날짜 목록
day_list = []
for i in range(delta.days + 1):
	day_list.append(start_date + timedelta(days = i)

day_lists_dict = []
for i in days:
	str_i = str(i)
	day_of_week = calendar.weekday(int(str_i[:4), int(str_i[5:7]), int(str_i[8:)) #요일
    day_list_dict.append(dict(date=str_i, day_of_week=day_of_week))

'Python > Python__works' 카테고리의 다른 글

python text compare  (0) 2021.03.31
PHPSESSID  (0) 2020.12.27
dictionary  (0) 2020.10.12
mysqlclient  (0) 2020.09.28
서버의 로그를 파이썬으로 읽어서 slack으로 전달하기  (0) 2020.09.24