2017-01-15 16 views
0

なぜ12月から始まりますか?最後に1 1が繰り返されます。与えられた年(閏年を扱っている)の全日にわたって反復するPythonの方法は何ですか?日付が間違っています

import calendar 

a = calendar.Calendar(0) 
for b in range(1,13): 
    for x in a.itermonthdates(2016,b): 
     print x.month, x.day 

出力:

12 28 
12 29 
12 30 
12 31 
1 1 
1 2 
1 3 
.. 
.. 
.. 

全出力:

http://pastebin.com/nnP4ADQK

答えて

2

itermonthdates戻り、完全な週:

itermonthdates(年、月) 年の月のイテレータ(1〜12)を返します。このイテレータは、その月のすべての日(datetime.dateオブジェクトとして)を返します。また、完全な週を取得するために必要な、月の開始前または終わりの後のすべての日を返します。

あなたは年が2016年ではありません日付だけで拒否することができます:

import calendar 

a = calendar.Calendar(0) 
g = (x for b in xrange(1, 13) for x in a.itermonthdates(2016, b) if x.year == 2016) 
print next(g) 

が出力:月の日を含み

2016-01-01 
0

itermonthdates 戻り、すべての週を。だから、すべての月にチェックを行う必要があります。

import calendar 
a = calendar.Calendar(0) 
for b in range(1,13): 
    for x in a.itermonthdates(2017,b): 
     if x.month==b: 
      print x #x.month, x.day 
関連する問題