琴葉葵

前回教えてくれた「time」で最後に言ってた「日付」を使う別の標準ライブラリってどんなやつなの??

琴葉茜

日時を使う場合の標準ライブラリは「datetime」ってやつだよ
日時の表現や計算が簡単にできて、うるう年や時差のような特殊な処理も対応してくれる便利なライブラリになるよ!

解説画像1
琴葉葵

うるう年とかを考慮してくれるのは良いね!!

琴葉茜

「datetime」では、取得した情報が「datetime型」っていうデータ型になるのがポイントで、直感的に扱いやすいのもポイントだね!

解説画像2
琴葉葵

ほうほう!パッと見で日時が分かるね!

琴葉茜

「datetime」では、取得した情報が「datetime型」っていうデータ型になるのがポイントで、直感的に扱いやすいのもポイントだね

琴葉茜

この状態から自分が希望する形で日時を表示する場合は「.strftime()」を使うと良いよ!

解説画像3
琴葉葵

文字列はいつも通りで、「%」の付く部分が対応する日時の情報になるんだね

琴葉葵

でも、どれがどの情報になってるのか覚えられるかな...

琴葉茜

ちなみに、それぞれの情報はこんな感じで対応してるよ!
なにか気づくことがないかな??

書式意味
%Y
4桁の西暦
2025
%y
2桁の西暦
25
%m
2桁の月(01〜12)
03
%d
2桁の日(01〜31)
06
%H
2桁の時(00〜23)
14
%M
2桁の分(00〜59)
45
%S
2桁の秒(00〜59)
30
%a
曜日の省略名(英語)
Thu
%A
曜日の正式名(英語)
Thursday
%w
曜日を数字で(0=日曜)
4
琴葉葵

...あっ!英語にした時の頭文字か!

琴葉茜

そうゆうこと!ちなみに曜日の省略名が「a」なのは、「省略された」が「abbreviated」だからだよ

琴葉茜

次に、文字列での利用ではなくて値として取得したい場合は表の通りになるよ
ちなみに、表内の「dt」はdatetime型の値が入ってる変数だよ

機能説明使用場面結果
dt.year, dt.month, dt.day年・月・日だけを取得個別に情報を使いたいときdt.year2025
dt.hour, dt.minute, dt.second時・分・秒だけを取得時間の細かい制御が必要なときdt.minute45
dt.microsecondマイクロ秒を取得高精度な時間管理dt.microsecond123456
dt.weekday()曜日を0〜6(=月〜日)で取得曜日ごとの処理を行いたいときdt.weekday()3(木曜)
dt.isoweekday()曜日を1〜7(=月〜日)で取得ISO基準の曜日が必要なときdt.isoweekday()4(木曜)
← 横にスクロールして確認しよう! →
琴葉葵

日時に関係する英単語を「.」の後にそのまんま付ける感じなんだね

琴葉茜

そうだね!
ただ、曜日以外は「()」が付かない点に注意してね

琴葉葵

ホントだ...!気を付ける!!

琴葉茜

「datetime」はさっきのプログラムのような特定の日時を指定してdatetime型にする「datetime()」「.date()」「.time()」とかがあるけど、完全に覚えるのは大変だから「確かこんなことができたな」くらいで覚えておけば十分だよ

機能説明使用場面
datetime.now()現在の日時を取得現在の時間を知りたいときdatetime.now()
datetime.today()今日の日付を取得(now()とほぼ同じ)簡易に今日を知りたいときdatetime.today()
datetime.utcnow()UTC現在時刻を取得時差のない時間を使いたいときdatetime.utcnow()
datetime.fromtimestamp()UNIXタイムスタンプから変換数値で保存された時間の変換datetime.fromtimestamp(1670000000)
datetime.timestamp()datetimeをUNIXタイムスタンプに数値で記録・送信したいときdt.timestamp()
datetime.strptime(文字列, 書式)文字列を日時に変換ユーザー入力やファイルの日付を扱うdatetime.strptime("2025-03-06", "%Y-%m-%d")
datetime.strftime(書式)日時を文字列に変換表示形式を自由に整えたいときnow.strftime("%Y/%m/%d")
datetime.date()特定の日付を作成固定の日付を作りたいときdatetime.date(2025, 3, 6)
datetime.time()特定の時刻を作成固定の時刻を扱いたいときdatetime.time(14, 30)
datetime()特定の日付と時刻をまとめて作成日時を自分で指定したいときdatetime(2025, 3, 6, 14, 30)
datetime.combine(date, time)日付と時間を合体日時の詳細指定が必要なときdatetime.combine(d, t)
← 横にスクロールして確認しよう! →
琴葉葵

めっちゃいっぱい...!
ところで、「今日から15日後は何月何日か」みたいな計算をする方法はあるの?

琴葉茜

もちろん出来るよ!
日時の計算の時は「timedelta」を使うと良いよ!

解説画像4
琴葉葵

なるほどね!

琴葉茜

ちなみに、datetime型の値同士を引き算すると「timedelta」の形になってくれるよ

解説画像5
琴葉葵

おお!そしたら、「締切日まであと何日!」みたいなのも簡単に出来るんだね!!

琴葉茜

そゆこと!