Pythonで月の日数が必要になったのですが、なかなか良い方法がわかりませんでした。
調べて行き着いた方法をまとめておきます。
月ごとの日数は基本決まっていますが、うるう年の考慮などを入れるとなかなかややこしいです。
先人たちの作った便利なクラスやメソッドがあるので使わない手はありません。
下記の手順で月の日数を求めます。
1. 求める月の初めの日のdatetimeを作成する
1. 求める月の次の月のdatetimeを作成する
1. 上記の差分を求める (次の月から前の月を引く)
次の月を求めるために, relativedeltaを使います。
```bash
$ pip install --upgrade python-dateutil
```
### 月の日数を求める
下記の方法で月の日数を求めます。
```
# coding: UTF-8
from datetime import datetime
from dateutil.relativedelta import relativedelta
targetMonth = datetime(2017, 5, 1)
nextMonth = targetMonth + relativedelta(months=1)
delta = nextMonth - targetMonth
days_of_month = delta.days
print(days_of_month)
```
#### 関数化しておきました
```python
# coding: UTF-8
from datetime import datetime
from dateutil.relativedelta import relativedelta
def days_of_month(year, month):
targetMonth = datetime(year, month, 1)
nextMonth = targetMonth + relativedelta(months=1)
delta = nextMonth - targetMonth
return delta.days
print(days_of_month(2017, 1))
```
月の日数を元にデータを作成したりする時に上記の方法が参考になれば幸いです。
仕事で機械的にデータを作成する時にも、このような方法を知っているとだいぶ捗ると思います。
0 件のコメント :
コメントを投稿