【Python】日付・時間を扱うdatetimeモジュールの主要4型と活用法

Pythonで日付や時間を扱う標準ライブラリ datetime モジュールには、目的に応じて使い分けるべき4つの主要なデータ型(クラス)が存在します。

それぞれの役割と違いを理解することで、スケジュールの計算やログの記録などを正確に実装できます。

目次

主要なデータ型の役割一覧

データ型 (クラス名)役割保持する情報具体例
date日付のみを扱う年、月、日2025-12-15 (生年月日、記念日など)
time時刻のみを扱う時、分、秒、マイクロ秒14:30:00 (開始時刻、定時など)
datetime日付と時刻の両方を扱う年月日 + 時分秒2025-12-15 09:00:00 (ログ記録、スケジュール)
timedelta時間の差分・期間を扱う日数、秒数など7 days (1週間後、経過時間の計算)

実装例:プロジェクトスケジュールの計算

これら4つの型を組み合わせた、実践的なコード例を紹介します。

「現在の日時を取得」し、「特定の期間(timedelta)」を加算して締め切り日を算出するシナリオです。

ソースコード

from datetime import date, time, datetime, timedelta

# --- 1. datetime: 現在の日時を取得 ---
# システムの現在時刻を取得します
current_dt = datetime.now()
print(f"現在日時 (datetime) : {current_dt}")

# --- 2. date: 特定の日付を作成 ---
# 年、月、日を指定してオブジェクトを作成します
# 例: プロジェクトのキックオフ日
kickoff_date = date(2025, 4, 1)
print(f"開始日 (date)       : {kickoff_date}")

# --- 3. time: 特定の時間を指定 ---
# 時、分、秒を指定します
# 例: 毎日行われる定例ミーティングの時間
meeting_time = time(9, 30, 0) # 09:30:00
print(f"会議時間 (time)     : {meeting_time}")

# --- 4. timedelta: 日時の計算(加算・減算) ---
# 時間の「長さ」や「差」を表現します
# 例: プロジェクト期間は「2週間と3日」
project_duration = timedelta(weeks=2, days=3)

# 開始日に期間を足して、終了予定日を計算
# date型 + timedelta型 = date型
end_date = kickoff_date + project_duration

print("-" * 30)
print(f"プロジェクト期間    : {project_duration}")
print(f"終了予定日          : {end_date}")

# --- おまけ: 日付の差分計算 ---
# 日付同士を引き算すると、timedelta(期間)が返されます
days_until_kickoff = kickoff_date - date.today()
print(f"開始まであと        : {days_until_kickoff.days} 日")

実行結果

現在日時 (datetime) : 2025-12-15 10:00:00.123456
開始日 (date)       : 2025-04-01
会議時間 (time)     : 09:30:00
------------------------------
プロジェクト期間    : 17 days, 0:00:00
終了予定日          : 2025-04-18
開始まであと        : -258 日

(※実行結果の日付は実行タイミングにより異なります。上記の「開始まであと」は過去の日付を指定した例として負の値になっています)

解説

  • 演算の互換性:
    • datedatetime に対して timedelta を足し引きすることで、「N日後」「N時間前」といった計算が簡単に行えます。
    • date 型同士、または datetime 型同士を引き算すると、その結果は timedelta 型になります(経過時間の取得)。
  • 注意点: date 型(日付のみ)と datetime 型(日付+時間)を直接足し引きすることはできません。どちらかの型に合わせて変換する必要があります。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次