Blow Up by Black Swan

Pythonー月末・月初の日付をpythonで取得

最近、また日付の扱いで途方にくれる事がありました。それは月末日と月初日の算出です。そこで色々とググっていたら、下記記事が見つかりました。

かなり参考になる記事なのですが、自分でコードを書いているときにもっとシンプルにできる方法に達したので、今回はそれについてまとめようと思います。基本線は上記の記事とほとんど同じですが。笑 また、使うモジュールもdatetimeモジュールだけです。笑

1. pythonで月初日を算出する

まずは月初日からです。

from datetime import date

#時刻データオブジェクト
this_month = date.today()

first_day = date(this_month.year, this_month.month, 1)
print(first_day)

(print文抜かして)たった3行です。笑インポート文も考慮せず、変数に格納しなければ1文でできてしまいます。笑今回は、date.today()でとりあえず日付を出していますが、時刻を表すデータであれば形式は問わず基本的に対応は可能です。文字列型でもstrftimeでdatetime型に変えてあげるだけで、非常に簡単な方法であることがわかると思います。時間を考慮したいのであれば、datetime型を利用してください。応用としては下記のようなことが考えられます。

  • なんらかの時刻データを取得し、その時刻データが属する月の日付を取得する
  • または、その時刻データが属する締め日(または1つ前の締め日)などを算出する

2. pythonで月末日を算出する

次は月末日です。こちらはtimedelta関数も使います。

from datetime import date, timedelta

#時刻データ
this_month = date.today()

end_day = date(this_month.year, this_month.month+1, 1) - timedelta(days=1)
print(end_day)

こちらも基本は1文で完結します。笑 ポイントは翌月初日を出して、timedelta関数で1日元に戻すというところです。timedeltaの部分は + timedelta(days=-1)でも同じ結果が得られます。月初日の場合と同様の応用が考えられます。

3. まとめ

時刻データは慣れ親しんでいてもプログラム上での取り扱いがややこしい印象があります。以前から時刻データに関する様々な記事を書いていますが、今でもうまいやり方が見つからず悩むことが多いです。今後も引き続きなんらかの発見があればブログでまとめていきたいと思います。短い記事でしたが、読んで頂きありがとうございました