モジュールと標準ライブラリ

INPUT · スライド

日付を計算する

01 / 07

30日後は何月何日?

「今日から30日後」を自分で計算しようとすると、意外に大変だよ。月の日数は30日だったり31日だったりバラバラで、2月は28日、うるう年なら29日。

これを全部ひとりで正しく書ける人は、実はあまりいない。だから datetime(デイトタイム)モジュールに任せるんだ。

いまの日付を取るのは1行だよ。

from datetime import dateprint(date.today())

ただしこれは実行した日によって結果が変わる。このレッスンでは答え合わせのために、日付を自分で作って使っていくよ。

02 / 07

date で日付を作る

date(年, 月, 日) で日付をひとつ作れる。表示すると 2026-04-01 のような形になるよ。

作った日付からは .year .month .day で中身を取り出せる。カッコをつけない値だというところは math.pi と同じだね。

from datetime import datehi = date(2026, 4, 1)print(hi)print(hi.year, hi.month, hi.day)

実行結果

2026-04-01
2026 4 1

03 / 07

timedelta で足し引きする

timedelta(タイムデルタ)は「期間」を表すものだよ。timedelta(days=30) なら30日ぶん。

これを日付に足したり引いたりできる。月をまたいでも、うるう年でも、正しく計算してくれるのがありがたいところだね。

from datetime import date, timedeltahi = date(2026, 4, 1)print(hi + timedelta(days=30))print(hi - timedelta(days=1))

実行結果

2026-05-01
2026-03-31

04 / 07

日付どうしを引き算する

日付から日付を引くと、間の期間が返ってくる。そのまま表示すると 34 days, 0:00:00 のような形だよ。

日数だけほしいときは .days をつけよう。「あと何日か」を数えるプログラムがこれで書けるね。

from datetime import datehajime = date(2026, 4, 1)owari = date(2026, 5, 5)sa = owari - hajimeprint(sa)print(sa.days)

実行結果

34 days, 0:00:00
34

05 / 07

datetime は時刻まで持つ

date は日付だけ。時刻まで扱いたいときは datetime を使うよ。datetime(年, 月, 日, 時, 分) の形だね。

モジュール名と同じ名前の道具があるので、from datetime import datetime という見た目になる。混乱しやすいけれど、書き方はそういうものと受け止めてしまおう。

from datetime import datetime, timedeltatoki = datetime(2026, 4, 1, 9, 30)print(toki)print(toki + timedelta(hours=3))

実行結果

2026-04-01 09:30:00
2026-04-01 12:30:00

06 / 07

strftime で見た目を整える

2026-04-01 のままではなく 2026年04月01日 と出したいこともあるね。そんなときは strftime(ストラフタイム)だよ。

  • %Y … 4桁の年
  • %m … 2桁の月
  • %d … 2桁の日

記号は覚えなくていい。「そういう書式の指定がある」とだけ知っておいて、必要になったら調べる——これで十分だよ。

from datetime import datehi = date(2026, 4, 1)print(hi.strftime("%Y/%m/%d"))print(hi.strftime("%Y年%m月%d日"))

実行結果

2026/04/01
2026年04月01日

07 / 07

カレンダーを自分で書かない

日付の計算は、見た目よりずっと落とし穴が多い。うるう年の判定ひとつとっても、4年ごと・100年ごと・400年ごとで例外があるんだ。

それを自分で書くのは、間違える練習をしているようなもの。やりたいことは、たいてい誰かがもう作っている。日付が出てきたら、まず datetime を思い出そう。