10

状況: 2 つの異なる日付を表す 2 つの異なる整数を受け入れる単純なメソッドを構築しようとしています。例として、2012 年 5 月 25 日の場合は 20120525、2012 年 6 月 26 日の場合は 20120627 です。このメソッドが、2 つの日付パラメーター間のすべての日を表すこれらの整数型のリストを返すようにします。

質問: これを行う方法と、それぞれの月が 28、29、30、または 31 日のいずれかの月を処理する方法について、何か提案をいただけないでしょうか。10 の累乗の除算/modding によって数値を整数として抽出し、上記の特定の条件でこれらの数値をそのままインクリメントすることでこれを行うことができると思いますが、これを行うより簡単な方法が必要だと感じています。

4

3 に答える 3

24

車輪を再発明する必要はありません。文字列を解析して datetime オブジェクトにするだけで、Python に計算を任せることができます。

from dateutil import rrule
from datetime import datetime

a = '20120525'
b = '20120627'

for dt in rrule.rrule(rrule.DAILY,
                      dtstart=datetime.strptime(a, '%Y%m%d'),
                      until=datetime.strptime(b, '%Y%m%d')):
    print dt.strftime('%Y%m%d')

版画

20120525
20120526
20120527
…
20120625
20120626
20120627
于 2012-07-03T19:01:14.703 に答える
11

を使用しない代替ソリューションrruleは次のとおりです。

import datetime

d1 = datetime.date(2015, 1, 1)
d2 = datetime.date(2015, 2, 6)
days = [d1 + datetime.timedelta(days=x) for x in range((d2-d1).days + 1)]

for day in days:
    print(day.strftime('%Y%m%d'))

出力:

20150101
20150102
20150103
<snip>
20150205
20150206
于 2015-11-28T10:48:07.417 に答える