Pythonでは日時を扱うモジュールがいくつか用意されています.
- datetime
- date
これらモジュールをうまく使うことで月初のような特定の日を表せます.
今回はdatetimeとdateモジュールを使って月初を取得する方法を紹介します.
datetimeモジュールで月初を取得する方法
月初を取得する方法はいくつかあります.
replaceメソッドを使う
datetimeモジュールを使って月初を取得するときによく使うのがreplaceメソッドでしょう.
replaceメソッドは年や日,時間にも応用ができるので便利です.
datetime モジュール|Pythondatetime.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.today().replace(day=1)
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(“%Y-%m-01”)を使う
月初であれば月ごとに始まる日にちが変わることはありません.
strftime()を使い01を指定するのも良いでしょう.
datetime.today().strftime("%Y-%m-01")
dateモジュールで月初を取得する方法
dateモジュールはdatetimeと似たような方法で月初を取得できます.
dateでは時:分:秒が表示されないので,時間単位が不要な場合はこちらがおすすめです.
date.today().replace(day=1)
date.today().strftime("%Y-%m-01")
まとめ
今回はdatetimeとdateモジュールを使って月初(〇月1日)を取得する方法を紹介しました.
print(date(2023, 1, 1))
このように年と月そして日を指定して月初を取得する方法もありましたが,これでは汎用性がないため月が変われば書き直す必要があるでしょう.
today()を使うと月が変わると自動でその月の月初を取得してくれるので便利でしたね.