Pythonの日付・時刻の基本!datetimeモジュールの使い方を解説
生徒
「Pythonで日付や時刻を扱いたいんですが、どうしたらいいですか?」
先生
「Pythonにはdatetimeという専用のモジュールがあって、現在時刻を取得したり、日付の計算をしたり、とても便利に使えますよ。」
生徒
「具体的にどんなことができるんですか?難しくないですか?」
先生
「ゆっくり説明するので大丈夫。まずは現在時刻を取り出す基本から見ていきましょう!」
1. datetimeモジュールとは?
Pythonのdatetimeモジュールは、日付(年・月・日)や時刻(時・分・秒)を扱うための標準機能です。追加のインストールは不要で、すぐに使えるのが大きな特徴です。
たとえば、今日の日付を知りたいときや、一週間後の日付を計算したいとき、またはログに時間を記録したり、締め切り日までの残り日数を計算したりするときなど、日常のプログラミングで頻繁に使われます。
2. 現在の日付と時刻を取得する
datetimeモジュールの中にはdatetimeクラスというものがあり、これを使うことで「今この瞬間の日時」を取得できます。
コンピュータに「いま何時?」と聞くようなイメージです。
from datetime import datetime
now = datetime.now()
print(now)
上のコードを実行すると、以下のように現在の日時が表示されます。
2025-12-09 03:12:45.123456
このように、年・月・日・時・分・秒までまとめて取得できます。
3. 年・月・日・時刻を個別に取り出す
取得した日時から、年だけ、月だけ、というように個別の値を取り出すこともできます。 datetimeオブジェクトは「箱の中にいろいろな情報が入っている」イメージで、その箱から必要なものを取り出します。
from datetime import datetime
now = datetime.now()
print(now.year)
print(now.month)
print(now.day)
print(now.hour)
print(now.minute)
print(now.second)
4. 日付を指定して作成する
自分で好きな日付・時刻を作ることもできます。例えば「2025年1月1日0時0分」を表す日時を作りたいときなどです。 これはイベントの日付や締め切り日時を設定するときによく使います。
from datetime import datetime
new_date = datetime(2025, 1, 1, 0, 0, 0)
print(new_date)
5. 日付の足し算・引き算(timedelta)
日付の計算にはtimedeltaを使います。これは「何日後」や「何時間前」といった時間の差を表すための機能です。
カレンダーで日付を一つ進めるようなイメージです。
from datetime import datetime, timedelta
today = datetime.now()
one_week_later = today + timedelta(days=7)
print(one_week_later)
これで「今日から7日後」を簡単に求められます。
6. 日時を文字列に変換する(strftime)
日付を画面にきれいな形で表示したいときや、ファイル名に日付を入れたいときには、日時を文字列に変換します。
これはstrftimeというメソッドで行います。
from datetime import datetime
now = datetime.now()
print(now.strftime("%Y-%m-%d %H:%M:%S"))
%Yは年、%mは月、%dは日を意味します。パターンを組み合わせて自由に形式を作れます。
7. 文字列から日時を作る(strptime)
外部データや入力フォームから「2025-12-01」のような文字列が渡されることがあります。
それをdatetimeとして扱うにはstrptimeを使います。
from datetime import datetime
date_str = "2025-12-01"
date_obj = datetime.strptime(date_str, "%Y-%m-%d")
print(date_obj)
8. 日付の比較をしてみる
datetime同士は大きい・小さいの比較が可能です。 例えば「締め切りを過ぎているかどうか」を判定できます。
from datetime import datetime
deadline = datetime(2025, 12, 31)
now = datetime.now()
if now > deadline:
print("締め切りを過ぎています。")
else:
print("まだ間に合います。")