2012-01-06 4 views
1

日付をjan 1,2012 - jan 31,2012 の形式で表示し、dateranges ['jan 1,2012 - jan 31 、2012年12月1日〜12月31日、2011年11月1日〜11月3日 '...' 2011年2月1日〜2月28日 'Pythonの日付形式jan 1,2012 - jan 31,2012

現在の月の数ヶ月前。 すべてのアイデア??? 助けてください!!!!!

答えて

1

でここdatetimecalendarモジュールを使用したソリューションです:私はこれを実行すると

import calendar 
import datetime 

current = datetime.date.today().replace(day=1) 
mylist = list() 
for i in xrange(12): 
    rng = calendar.monthrange(current.year, current.month) 
    last = current.replace(day = rng[1]) 
    mylist.append(current.strftime("%b 1, %Y") + " - " + last.strftime("%b %d, %Y")) 
    current = (current - datetime.timedelta(1)).replace(day=1) 
print mylist 

それは印刷します。あなたがすることによって行くの

['Jan 1, 2012 - Jan 31, 2012', 'Dec 1, 2011 - Dec 31, 2011', 'Nov 1, 2011 - Nov 30, 2011', 'Oct 1, 2011 - Oct 31, 2011', 'Sep 1, 2011 - Sep 30, 2011', 'Aug 1, 2011 - Aug 31, 2011', 'Jul 1, 2011 - Jul 31, 2011', 'Jun 1, 2011 - Jun 30, 2011', 'May 1, 2011 - May 31, 2011', 'Apr 1, 2011 - Apr 30, 2011', 'Mar 1, 2011 - Mar 31, 2011', 'Feb 1, 2011 - Feb 28, 2011'] 
+0

いい、私はcalendar.monthrangeメソッドを見たことがなかった前に。 +1 –

+0

こんにちはsrgerg ... post.Thisのための多くのおかげで、私が探していたものとまったく同じだった... – Alchemist777

0

これはハックのビットですが、うまくいけば、誰かがあなたのより良い方法を表示することができます。

その多くの日が期間内に存在していないので、あなたが力ずくですべての日付を作り出すことができる:

import datetime 
for year in range(2011,2013): 
    for month in range(1,13): 
     for day in range(28,32): 
      try: 
       _date=datetime.date(year,month,day) 
      except ValueError: 
       print month,day 

output: 
2 29 
2 30 
2 31 
4 31 
6 31 
9 31 
11 31 
2 30 
2 31 
4 31 
6 31 
9 31 
11 31 

基本的にこのブルートフォース方法を使用すると、毎月の最大日付を計算することができます。

私はこう提案しています: このような手法を使用すると、毎月の最大日付を表す日付オブジェクトのリストを作成できます。

各月の最初の日のリストを作成します。

>>> datetime.date.today().strftime("%a") 
'Fri' 
:二つのリスト

はstrftimeの方法

などを使用して、日付範囲を印刷し、あなたはzip形式のリストから取得した各ペアの二つのリスト

ジップ

ソート

http://docs.python.org/library/time.htmlのページの途中に、strftimeを渡すべきものが表示されます。 「%」の例

+0

はこの十分ですか?あなたが私の答えを洗練させたいのですか? –

+0

こんにちは、ロバート::多くのポストのおかげで..それは助け.. – Alchemist777