【Python】月初めを取得するには?標準モジュールで特定の日を表す方法を紹介

python_datetime_月初 プログラミング言語

Pythonでは日時を扱うモジュールがいくつか用意されています.

  • datetime
  • date

これらモジュールをうまく使うことで月初のような特定の日を表せます.

今回はdatetimeとdateモジュールを使って月初を取得する方法を紹介します.

datetimeモジュールで月初を取得する方法

月初を取得する方法はいくつかあります.

replaceメソッドを使う

datetimeモジュールを使って月初を取得するときによく使うのがreplaceメソッドでしょう.

replaceメソッドは年や日,時間にも応用ができるので便利です.

datetime.replace(year=self.year, month=self.month, day=self.day, hour=self.hour, minute=self.minute, second=self.second, microsecond=self.microsecond, tzinfo=self.tzinfo, *, fold=0)
datetime モジュール|Python

このようにすると月初を取得できます.

datetime.today().replace(day=1)
replace()を使った実行結果|クリックして拡大できます

datetime.today()で本日の日付を取得しました.
今日は2023年11月16日です.残念ながら1日ではありません.

replace(day=1)とすることで16日の日付部分を1日に置き換えました.

これでいつ実行しても月初が取得できますね!

もし後ろの 20:08:28.772342 が不要の場合は strftime(“%Y-%m-%d”) を付けると良いでしょう.

datetime.today().replace(day=1).strftime("%Y-%m-%d")
strftimeを使い時間を表示しない|クリックして拡大できます

strftime(“%Y-%m-01”)を使う

月初であれば月ごとに始まる日にちが変わることはありません.

strftime()を使い01を指定するのも良いでしょう.

datetime.today().strftime("%Y-%m-01")
strftime(“%Y-%m-01”)を使った実行結果|クリックして拡大できます

dateモジュールで月初を取得する方法

dateモジュールはdatetimeと似たような方法で月初を取得できます.

dateでは時:分:秒が表示されないので,時間単位が不要な場合はこちらがおすすめです.

date.today().replace(day=1)
date.today().strftime("%Y-%m-01")
dateモジュールを使った実行結果|クリックして拡大できます

まとめ

今回はdatetimeとdateモジュールを使って月初(〇月1日)を取得する方法を紹介しました.

print(date(2023, 1, 1))
date()で年と月,日を指定した実行結果|クリックして拡大できます

このように年と月そして日を指定して月初を取得する方法もありましたが,これでは汎用性がないため月が変われば書き直す必要があるでしょう.

today()を使うと月が変わると自動でその月の月初を取得してくれるので便利でしたね.