datetimeで日付を扱う

このレッスンでできるようになること。datetime モジュールの date で日付を組み立て、strftime で好きな形に整えて表示できるようになります。

日付は文字列で持たない

支出に日付を付けるとき、"2026/8/1" のような文字列で持つと、月ごとの集計や並べ替えのたびに文字列を切り分けることになります。Python には日付そのものを表す型があるので、そちらを使います。

from datetime import date day = date(2026, 8, 1) print(day.year) # 2026 print(day.month) # 8

date(年, 月, 日) で日付を作ります。存在しない日付を渡すとその場でエラーになるので、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) のように固定して書きます。

要件

  1. datetime モジュールの date を使って日付を組み立てること
  2. strftime で %Y/%m/%d の形に整えること
  3. 戻り値は 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編集部
main.py
学習モード

メモ

datetimeで日付を扱う

⌘S で保存