2014-01-20 2 views
5

이번 달에 매일 datetime의 개체를 가져오고 싶지만 아직 완료하지 않았습니다. 예상 한 결과는 다음과 같습니다.당월의 모든 날을 얻는 방법?

[datetime.date(2014, 1, 1), datetime.date(2014, 1, 2), 
datetime.date(2014, 1, 3), ..., datetime.date(2014, 1, 29), 
datetime.date(2014, 1, 30), datetime.date(2014, 1, 31)] 

이 문제를 어떻게 해결할 수 있습니까?

아이디어 나 제안 사항을 보여주십시오. 감사!

+5

는 한 달에 얼마나 많은 일을 알고 싶어은? 한 달에 매일 datetime 객체를 원합니까? 찾고자하는 것이 무엇인지 자세히 설명하고, 지금까지 시도한 것을 보여주십시오. – senshin

+0

[캘린더 모듈] (http://docs.python.org/3/library/calendar.html)을 확인하십시오. – codeape

+0

@ senshin : 실수로 죄송합니다. 제 질문을 업데이트했습니다. –

답변

11

여기 datetimecalendar있는 솔루션입니다 :

>>> import datetime, calendar 
>>> year = 2014 
>>> month = 1 
>>> num_days = calendar.monthrange(year, month)[1] 
>>> days = [datetime.date(year, month, day) for day in range(1, num_days+1)] 
>>> days 
[datetime.date(2014, 1, 1), datetime.date(2014, 1, 2), datetime.date(2014, 1, 3), datetime.date(2014, 1, 4), datetime.date(2014, 1, 5), datetime.date(2014, 1, 6), datetime.date(2014, 1, 7), datetime.date(2014, 1, 8), datetime.date(2014, 1, 9), datetime.date(2014, 1, 10), datetime.date(2014, 1, 11), datetime.date(2014, 1, 12), datetime.date(2014, 1, 13), datetime.date(2014, 1, 14), datetime.date(2014, 1, 15), datetime.date(2014, 1, 16), datetime.date(2014, 1, 17), datetime.date(2014, 1, 18), datetime.date(2014, 1, 19), datetime.date(2014, 1, 20), datetime.date(2014, 1, 21), datetime.date(2014, 1, 22), datetime.date(2014, 1, 23), datetime.date(2014, 1, 24), datetime.date(2014, 1, 25), datetime.date(2014, 1, 26), datetime.date(2014, 1, 27), datetime.date(2014, 1, 28), datetime.date(2014, 1, 29), datetime.date(2014, 1, 30), datetime.date(2014, 1, 31)] 
+1

@seeshin : 그것은 내가 원하는 대답이다. 귀하의 제안에 감사드립니다! –

6

calendar 모듈에 :

import calendar 
print calendar.monthcalendar(2013, 4) 
[[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, 0, 0, 0, 0, 0]] 
1

가 여러 가지 방법하지만 calendar.monthrange, 당신은 튜플 (first_weekday, nb_days) 얻을 수 있습니다 :

from calendar import monthrange 
import datetime 

def get_datetime_range(year, month): 
    nb_days = monthrange(year, month)[1] 

    return [datetime.date(year, month, day) for day in range(1, nb_days+1)] 

print get_datetime_range(2014, 2) # usage example 
: 그것은 청소기 만들기 위해 기능을 사용

>>> from calendar import monthrange 
>>> monthrange(2014, 2) 
(5, 28) 
>>> a = monthrange(2014, 2) 
>>> range(1, a[1]+1) 
[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] 
>>> [datetime.date(2014, 2, day) for day in range(1, a[1]+1)] 
[datetime.date(2014, 1, 1), datetime.date(2014, 1, 2), datetime.date(2014, 1, 3), datetime.date(2014, 1, 4), datetime.date(2014, 1, 5), datetime.date(2014, 1, 6), datetime.date(2014, 1, 7), datetime.date(2014, 1, 8), datetime.date(2014, 1, 9), datetime.date(2014, 1, 10), datetime.date(2014, 1, 11), datetime.date(2014, 1, 12), datetime.date(2014, 1, 13), datetime.date(2014, 1, 14), datetime.date(2014, 1, 15), datetime.date(2014, 1, 16), datetime.date(2014, 1, 17), datetime.date(2014, 1, 18), datetime.date(2014, 1, 19), datetime.date(2014, 1, 20), datetime.date(2014, 1, 21), datetime.date(2014, 1, 22), datetime.date(2014, 1, 23), datetime.date(2014, 1, 24), datetime.date(2014, 1, 25), datetime.date(2014, 1, 26), datetime.date(2014, 1, 27), datetime.date(2014, 1, 28), datetime.date(2014, 1, 29), datetime.date(2014, 1, 30), datetime.date(2014, 1, 31)] 

1

datetimetimedelta :

import datetime 
d0 = datetime.datetime(year=2014, month=1, day=1) 
d1 = datetime.datetime(year=2014, month=2, day=1) 
print (d1 - d0).days 
>>> 31 
2
>>> from calendar import Calendar 
>>> Calendar().monthdayscalendar(2014,1) 
[[0, 0, 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, 0, 0]] 

>>> month = Calendar().itermonthdates(2014,1) 
>>> print [day for day in month if day.month == 1] # this function will pad to make up full weeks, so filter it by month 
[datetime.date(2014, 1, 1), datetime.date(2014, 1, 2), datetime.date(2014, 1, 3), datetime.date(2014, 1, 4), datetime.date(2014, 1, 5), datetime.date(2014, 1, 6), datetime.date(2014, 1, 7), datetime.date(2014, 1, 8), datetime.date(2014, 1, 9), datetime.date(2014, 1, 10), datetime.date(2014, 1, 11), datetime.date(2014, 1, 12), datetime.date(2014, 1, 13), datetime.date(2014, 1, 14), datetime.date(2014, 1, 15), datetime.date(2014, 1, 16), datetime.date(2014, 1, 17), datetime.date(2014, 1, 18), datetime.date(2014, 1, 19), datetime.date(2014, 1, 20), datetime.date(2014, 1, 21), datetime.date(2014, 1, 22), datetime.date(2014, 1, 23), datetime.date(2014, 1, 24), datetime.date(2014, 1, 25), datetime.date(2014, 1, 26), datetime.date(2014, 1, 27), datetime.date(2014, 1, 28), datetime.date(2014, 1, 29), datetime.date(2014, 1, 30), datetime.date(2014, 1, 31)] 

http://docs.python.org/3/library/calendar.html

관련 문제