タイトル通りです。 指定した二つの日付の間の全ての日を取得したい。 また、指定した日付の間の全ての月や年も取得したい。
必要なモジュール
from datetime import datetime, date, timedelta from dateutil.relativedelta import relativedelta
dateutil.relativedelta
にて月・年の時間差分を計算することができる。
今回は年月日のみの計算だが、year, month, day, hour, minute, second, microsecondのオプションが用意されている.
timedelta
では日付の差分までしか取得できないので、年や月の足し引きを行いたい場合は dateutil.relativedelta
を使用することになる.
コード
二つのタイムスタンプを受け取り、
day
ならば二つの間の間の全ての日付を、
month
ならば二つの間の間の全ての月を、
year
ならば二つの間の間の全ての年を出力します.
dateutil.relativedelta
で終わりの日付を超えるまで足し続けるようにした方がよかったですね.
出力例
日
get_alldate_between_startend(date(2010, 10, 8), date(2010, 10, 12), tsbase="day") [datetime.date(2010, 10, 8), datetime.date(2010, 10, 9), datetime.date(2010, 10, 10), datetime.date(2010, 10, 11), datetime.date(2010, 10, 12)]
月
get_alldate_between_startend(date(2010, 12, 8), date(2013, 3, 9), tsbase="month") # 出力 [datetime.date(2010, 12, 1), datetime.date(2011, 1, 1), datetime.date(2011, 2, 1), datetime.date(2011, 3, 1), datetime.date(2011, 4, 1), datetime.date(2011, 5, 1), datetime.date(2011, 6, 1), datetime.date(2011, 7, 1), datetime.date(2011, 8, 1), datetime.date(2011, 9, 1), # ... 省略 ... datetime.date(2013, 7, 1), datetime.date(2013, 8, 1), datetime.date(2013, 9, 1), datetime.date(2013, 10, 1), datetime.date(2013, 11, 1), datetime.date(2013, 12, 1), datetime.date(2013, 1, 1), datetime.date(2013, 2, 1), datetime.date(2013, 3, 1)]
年
get_alldate_between_startend(date(2010, 12, 8), date(2013, 3, 9), tsbase="year") # 出力 [datetime.date(2010, 1, 1), datetime.date(2011, 1, 1), datetime.date(2012, 1, 1), datetime.date(2013, 1, 1)]
関連:日付特徴の作成
![Pythonクローリング&スクレイピング[増補改訂版] -データ収集・解析のための実践開発ガイド Pythonクローリング&スクレイピング[増補改訂版] -データ収集・解析のための実践開発ガイド](https://images-fe.ssl-images-amazon.com/images/I/41VimzqqXAL._SL160_.jpg)
Pythonクローリング&スクレイピング[増補改訂版] -データ収集・解析のための実践開発ガイド
- 作者: 加藤耕太
- 出版社/メーカー: 技術評論社
- 発売日: 2019/08/10
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る