2

重複の可能性:
Python で日付の範囲を繰り返す

開始日と終了日を渡すメソッドを取得しました。最終結果は、開始日と終了日の間のすべての日付をリストとして表示することです。たとえば、開始日が '2013-01-01' で終了日が '2013-01-04' の場合 ['2013-01-01','2013-01-02','2013-01-03 ','2013-01-04'] が返されます。以下のようなことができました。しかし、私が考えていない簡単な方法があるかどうか疑問に思いました

year = int(startdate.split('-')[0])
month = int(startdate.split('-')[1])
day = int(startdate.split('-')[2])
4

3 に答える 3

2
>>> from datetime import datetime, timedelta
>>> starttime = datetime.strptime('2013-01-01', '%Y-%m-%d')
>>> endtime = datetime.strptime('2013-01-04', '%Y-%m-%d')
>>> [starttime + timedelta(days=i) for i in range((endtime - starttime).days + 1)]
[datetime.datetime(2013, 1, 1, 0, 0), datetime.datetime(2013, 1, 2, 0, 0), datetime.datetime(2013, 1, 3, 0, 0), datetime.datetime(2013, 1, 4, 0, 0)]
>>> list(map(lambda x: x.strftime('%Y-%m-%d'), _))
['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04']
于 2013-01-14T23:17:14.313 に答える
1

これはうまくいくはずです:

from datetime import datetime
from datetime import timedelta

d1 = datetime.strptime('2013-01-01', '%Y-%m-%d')
d2 = datetime.strptime('2013-01-04', '%Y-%m-%d')

[d1 + timedelta(days=x) for x in range(0, (d2 - d1).days + 1)]
于 2013-01-14T23:14:49.517 に答える
0

私は行きます:

from dateutil import parser as dateparser
from dateutil.rrule import rrule, DAILY

sd = dateparser.parse('2013-01-01')
ed = dateparser.parse('2013-01-04')

dates = (rrule(DAILY, sd, until=ed))
fmt = '{:%Y-%m-%d}'
print map(fmt.format, dates)
# ['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04']
于 2013-01-14T23:29:11.677 に答える