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 の書式指定子は、実際に手を動かして覚えるのが早いです。
この章の例題(3問)
当サイトで実際に出題している問題から3問を、正解と解説つきで掲載します。 すべて自作のオリジナル問題で、実際の試験問題ではありません。
例題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 を取り出す。時刻を含む datetime 同士でも同じく timedelta が返る。
例題3. 実行結果として正しいものを選べ。
from datetime import datetime
d = datetime.strptime("2026/09/29", "%Y/%m/%d")
print(d.date())
- 正解2026-09-29
- 2026-09-29 00:00:00
- ValueError
- TypeError
解説: strptime は文字列を datetime に変換する(parse の p)。逆に datetime を文字列にするのは strftime(format の f)。向きの取り違えが頻出。書式が実際の文字列と食い違うと ValueError になる。
この章は当サイトに全11問を収録しています。残りはドリルの「章別に解く」から解けます。