datetimeで日付を扱う
このレッスンでできるようになること。datetime モジュールの date で日付を組み立て、strftime で好きな形に整えて表示できるようになります。
日付は文字列で持たない
支出に日付を付けるとき、"2026/8/1" のような文字列で持つと、月ごとの集計や並べ替えのたびに文字列を切り分けることになります。Python には日付そのものを表す型があるので、そちらを使います。
from datetime import date
day = date(2026, 8, 1)
print(day.year) # 2026
print(day.month) # 8date(年, 月, 日) で日付を作ります。存在しない日付を渡すとその場でエラーになるので、2026-02-31 のような間違ったデータが後の処理まで流れていくのを防げます。
strftime で表示を整える
strftime は日付を文字列に変換するメソッドです。書式は記号で指定します。
%Yは4桁の年、%yは下2桁の年%mは2桁の月、%dは2桁の日%m/%dなら08/01、%Y年%m月%d日なら2026年08月01日
print(date(2026, 8, 1).strftime("%Y/%m/%d")) # 2026/08/01%m と %d は必ず2桁になるので、リストにして並べたときに桁が揃います。家計簿の一覧表示では、この揃うことが読みやすさに直結します。
今日の日付は使わない
date.today() を使うと実行した日の日付が返ります。便利ですが、練習で使うと実行するたびに結果が変わってしまい、正解と比べられません。このコースでは日付を date(2026, 8, 1) のように固定して書きます。
要件
- datetime モジュールの date を使って日付を組み立てること
- strftime で %Y/%m/%d の形に整えること
- 戻り値は 2026/08/01 ランチ 850円 のような1行の文字列にすること
入出力例
format_expense("ランチ", 850, 2026, 8, 1) → "2026/08/01 ランチ 850円"
format_expense("書籍", 1200, 2026, 12, 25) → "2026/12/25 書籍 1200円"
format_expense("電車代", 320, 2026, 3, 9) → "2026/03/09 電車代 320円"ヒント
編集 LuaGate編集部