🐍 Python

strftime() で日時を文字列に変換する

strftime()は日時オブジェクトを、画面表示やログ出力向けの任意の書式の文字列に変換するメソッドです。「string format time」の略で、%Yや%mのようなフォーマットディレクティブを組み合わせて書式を指定します。

dt.strftime(format)
# %Y=4桁の年 %m=2桁の月 %d=2桁の日
# %H=24時間表記の時 %M=分 %S=秒
# %A=曜日名(フル) %B=月名(フル) %j=年内の通算日
from datetime import datetime

d = datetime(2026, 8, 10, 9, 5, 3)
print(d.strftime("%Y-%m-%d"))
# 2026-08-10
# 複数のディレクティブを組み合わせる
from datetime import datetime

d = datetime(2026, 8, 10, 9, 5, 3)
print(d.strftime("%Y/%m/%d %H:%M:%S"))
# 2026/08/10 09:05:03
# 曜日名・月名も出力できる(ロケール依存)
from datetime import datetime

d = datetime(2026, 8, 10, 9, 5, 3)
print(d.strftime("%A, %B %d, %Y"))
# Monday, August 10, 2026
# 2桁年や年内通算日も指定できる
from datetime import datetime

d = datetime(2026, 8, 10, 9, 5, 3)
print(d.strftime("%y-%m-%d"))
# 26-08-10
print(d.strftime("%j"))
# 222 ← その年の1月1日から数えて222日目
よく使うディレクティブ
%Y / %y
4桁の年 / 2桁の年(世紀部分を省略)
%m / %d
2桁の月(01〜12) / 2桁の日(01〜31)
%H / %M / %S
24時間表記の時(00〜23) / 分 / 秒
%A / %B
曜日のフル名(実行環境のロケールに依存) / 月のフル名
💡 AIコードレビュー観点:%A/%Bはロケールに依存する

%Aや%Bが返す曜日名・月名は、実行環境のロケール設定によって"Monday"のように英語になったり、"月曜日"のように日本語になったりします。AIが生成したコードで「日本語の曜日を表示したい」という意図で%Aを使っている場合、サーバーのロケール設定次第では期待通りに表示されません。ロケールに依存させたくない場合はcalendar.day_nameを使うか、曜日番号(weekday())から自前の対応表で変換する方が安全です。

← Python datetime クイックリファレンス一覧へ戻る / strptimeで文字列をパースする →