python 일정 기간의 날짜 출력 방법


python을 가지고 일정 기간의 날짜를 출력하고자 합니다.

예를 들면 20160901부터 20161031까지입니다.

하지만 단순히 range를 가지고

date1 = int('20160901')
date2 = int('20161032')
for x in range(date1, date2):
    print x

이렇게 사용하는 경우에는 9월은 30일까지 있으나,

20160901

...

20160930

20160931

20160932

...

20160999

20161000

20161001

...

20161031

이런식으로 출력되어버립니다.

원하는 것은 201 60930 다음에는 20161001이 출력되는 건데 말이죠.

위 방법도 결국은 해당 기간을 모두 포함하니 결과는 출력되지만 쓰레기값이 잔뜩 들어가 효율성에 문제가 발생하고 있습니다. datetime으로 시간 타입으로 저장을 했더니 range(int형, int형)를 통해 범위를 사용하는데 문제가 발생하구요.

마땅한 방법이 떠오르지 않아 질문드려봅니다.

  • 2016년 10월 22일에 작성됨
    보안 분야 업무를 하고있으며, python개발을 주로 합니다.

조회수 123


2 답변


좋아요
1
싫어요
채택취소하기

calendar.monthrange(year, month) 은 해당 월의 1일이 무슨 요일(월요일이 0)인지와 해당 월이 며칠까지 있는지를 리턴해줍니다.

import calendar

print calendar.monthrange(2016,10)  
# 실행 결과값 (5, 31)

time 모듈과 함께 위의 리턴값을 활용하면 원하시는 기능을 충분히 구현할 수 있을거라 생각합니다

  • 2016년 10월 22일에 작성됨
    Software Engineer


김선우님이 남겨주신 답변도 잘 사용했습니다. calendar 라이브러리는 처음 써보네요.

그리고 자문 자답으로 하나 더 남기자면

import datetime
today = datetime.date.today()
print today
today = today + datetime.timedelta(+10)
print today

이렇게 쓸 경우

2016-10-23 2016-11-02

이렇게 출력됩니다. 알아서 계산이 되는거죠.. 저기 timedelta값은 날짜, 시간, 밀리초 등 여러 값을 넣을 수 있고, 해당 값을 +/- 해가면서 날짜값을 조절 할 수 있었습니다.

  • 2016년 10월 23일에 작성됨
    보안 분야 업무를 하고있으며, python개발을 주로 합니다.

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close