8章「日付と時刻の処理」の対策ポイントと例題
8章「日付と時刻の処理」からは本番40問中2問が出ます。datetime モジュールの型の使い分けと、書式化文字列の読み書きを問う章です。
- datetime
- date
- timedelta
- strftime
- strptime
- timezone
- calendar
この章の出題数と位置づけ
8章「日付と時刻の処理」からは本番40問のうち2問が出題されます。 全体に占める割合は5.0%で、15章中6番目タイの出題数です(同じ2問の章が他に7章あります)。 合格に必要なのは28問正解(12問まで不正解可)なので、 この章の2問をどこまで取りに行くかは、他の章との兼ね合いで決めるのが現実的です。
対策のポイント
- strftime は「日時 → 文字列」、strptime は「文字列 → 日時」。p が parse の p、と覚えると取り違えません。
- datetime どうしの引き算は timedelta を返し、timedelta の days / seconds の持ち方には癖があります。
- naive(タイムゾーンなし)と aware(あり)の区別、両者を比較したときの挙動を押さえます。
- %Y / %m / %d / %H / %M / %S の書式指定子は、実際に手を動かして覚えるのが早いです。
この章の例題(2問)
当サイトで実際に出題している問題から2問を、正解と解説つきで掲載します。 すべて自作のオリジナル問題で、実際の試験問題ではありません。
例題1. datetime オブジェクトを 2026-09-05 という形式の文字列にする書式指定はどれか。
- 正解"%Y-%m-%d"
- "%y-%M-%D"
- "%Y-%M-%D"
- "%yyyy-%mm-%dd"
解説: 大文字 %Y が4桁年、小文字 %y が2桁年。%m は月だが %M は分なので、この取り違えが出題されやすい。%d は日。
例題2. 実行結果として正しいものを選べ。
import datetime
d = datetime.date(2026, 9, 5) - datetime.date(2026, 9, 1)
print(type(d))
- 正解<class 'datetime.timedelta'>
- <class 'int'>
- <class 'datetime.date'>
- TypeError
解説: 日付同士の差は timedelta。日数が欲しいなら .days を取り出す。なお tzinfo を持つ aware な datetime と持たない naive な datetime の減算は TypeError になる。
この章は当サイトに全2問を収録しています。残りはドリルの「章別に解く」から解けます。