1. はじめに
Pythonで日付や時間を扱う機会は非常に多くありますが、「現在の年月を『2025-07』のような形式で取得する」処理は、特にログ名やファイル名の自動生成、定期処理の判定、月次集計などで頻繁に使われます。
本記事では、Pythonの標準ライブラリであるdatetime
モジュールを使って、現在の年月を「YYYY-MM」形式で取得する方法を解説します。初心者でも理解しやすいように、基本から丁寧に説明し、よくある応用例や注意点も紹介していきます。
2. Pythonで現在の年月を「YYYY-MM」形式で取得する方法
2-1. datetimeモジュールとは
Pythonのdatetime
モジュールは、日付や時刻の操作を簡単に行える標準ライブラリです。外部ライブラリを使わずに、現在の日付・時刻の取得、文字列形式への変換などが行えます。
2-2. strftime()でフォーマット指定
年月を「2025-07」形式で取得するには、以下のようにdatetime.now()
とstrftime()
を組み合わせて使用します。
from datetime import datetime
# 現在の年月を「YYYY-MM」形式で取得
current_year_month = datetime.now().strftime("%Y-%m")
# 出力
print(current_year_month)
実行結果:
2025-07
2-3. フォーマット指定子の解説
%Y
:西暦(4桁) → 例:2025%m
:月(2桁) → 例:07
つまり、"%Y-%m"
と指定することで「2025-07」のような文字列が出力されるのです。
3. よくある使い方・応用例
3-1. ファイル名・ログ名に年月を付与
年月をファイル名に入れて、重複を避けたり、時系列で管理しやすくしたりできます。
from datetime import datetime
# 年月を取得
ym = datetime.now().strftime("%Y-%m")
# ファイル名に年月を使う例
filename = f"log_{ym}.txt"
print(filename)
実行結果:
log_2025-07.txt
3-2. 月ごとの処理制御
たとえば、「前回と同じ月かどうかをチェックして処理をスキップ」などにも活用できます。
from datetime import datetime
current_ym = datetime.now().strftime("%Y-%m")
last_ym = "2025-07" # 前回処理時の年月
if current_ym == last_ym:
print("今月はすでに処理済みです。")
else:
print("新しい月の処理を開始します。")
実行結果:
今月はすでに処理済みです。
3-3. 月次レポートやグラフ作成のキーとして
Pandasなどで月ごとの集計をする際にも、「YYYY-MM」形式が非常に使いやすく、グラフや表のラベルにそのまま使用できます。
4. 注意点・エラー対策
4-1. ゼロ埋めされるかを確認
%m
を使うことで「07」のようにゼロ埋めされます。%-m
(Unix系)を使うと「7」になりますが、Windowsでは使えません。環境依存に注意してください。
4-2. strftimeは日付型でしか使えない
strftime()
は文字列ではなく、datetime
オブジェクトに対して使う必要があります。
NG例:
# これはエラーになります
date_str = "2025-07-23"
print(date_str.strftime("%Y-%m"))
実行結果:
AttributeError: 'str' object has no attribute 'strftime'
→ 対処法:まず文字列をdatetime
型に変換する必要があります。
4-3. 月の区切りを意識した処理
月が変わった直後(1日0時)に動作させる処理では、タイムゾーンやサーバ時刻によってズレる可能性があります。datetime.now()
ではなく、datetime.utcnow()
なども検討しましょう。
5. まとめ
本記事では、Pythonで現在の年月を「2025-07」の形式で取得する方法について詳しく解説しました。
datetime.now()
で現在日時を取得strftime("%Y-%m")
で年月の文字列に整形- ファイル名、ログ出力、月次処理などに実務で活用可能
Pythonで日付を扱うスキルは、実務でも非常に役立ちます。今回のようなシンプルな操作から少しずつ慣れていくと、ログ処理や自動化スクリプトにも応用でき、実務力が一気に高まります。