Pythonの「datetime」ライブラリで時間と日付をスマートに扱おう!

投稿者: | 2026-01-15

お読みいただきありがとうございます!プログラミングをしていると、日付や時刻を扱う機会って意外と多いですよね。誕生日、イベントのスケジュール、ログの時間記録など、様々な場面で必要になります。でも、これらの情報を正確に、そして柔軟に扱うのは、思っていたよりも複雑だと感じたことはありませんか?

概要

Pythonの標準ライブラリであるdatetimeは、日付と時刻の操作を強力にサポートしてくれるモジュールです。日付、時刻、またはその両方を組み合わせた情報を、直感的で使いやすいオブジェクトとして扱うことができます。

datetimeモジュールには、主に以下のクラスが含まれています。

  • dateクラス: 年、月、日のみを扱います。
  • timeクラス: 時、分、秒、マイクロ秒のみを扱います。
  • datetimeクラス: 年、月、日、時、分、秒、マイクロ秒をすべて扱える、最も汎用的なクラスです。
  • timedeltaクラス: 二つのdateまたはdatetimeオブジェクト間の時間差、あるいは時間間隔を表します。これを使うことで、日付や時刻の加算・減算が簡単に行えます。
  • tzinfoクラス: タイムゾーン情報(UTCからのオフセットなど)を扱います。

これらのクラスを組み合わせることで、日付や時刻に関するあらゆる処理を柔軟に行うことが可能になります。

メリット

datetimeライブラリを使う最大のメリットは、何と言っても日付や時刻に関する複雑な計算やフォーマット変換を、直感的でオブジェクト指向な方法で処理できる点にあります。

  • 豊富な機能: 現在時刻の取得から、特定の日付の生成、日付間の比較、時間差の計算、そして様々な形式へのフォーマット変換まで、日付・時刻処理に必要な機能が網羅されています。
  • 標準ライブラリ: Pythonに最初から含まれているため、追加のインストールなしですぐに利用できます。互換性の心配も少なく、安心してプロジェクトに導入できます。
  • 可読性の向上: 日付や時刻を専用のオブジェクトとして扱うため、文字列で直接操作するよりもコードの可読性が格段に向上し、バグのリスクを減らすことができます。

サンプルコード

それでは、実際にdatetimeライブラリを使ってみましょう!基本的な使い方をいくつかご紹介します。

import datetime

# 1. 現在の日付と時刻を取得する
now = datetime.datetime.now()
print(f"現在のdatetime: {now}")

# 2. 特定の日付と時刻を作成する
# 2024年4月15日 10時30分0秒
specific_dt = datetime.datetime(2024, 4, 15, 10, 30, 0)
print(f"特定のdatetime: {specific_dt}")

# 3. 日付と時刻から個別の要素を取得する
print(f"年: {specific_dt.year}")
print(f"月: {specific_dt.month}")
print(f"日: {specific_dt.day}")
print(f"時: {specific_dt.hour}")
print(f"分: {specific_dt.minute}")
print(f"秒: {specific_dt.second}")

# 4. 日付の計算 (timedeltaを使用)
# 7日後の日付を計算
seven_days_later = now + datetime.timedelta(days=7)
print(f"7日後のdatetime: {seven_days_later}")

# 3時間前の時刻を計算
three_hours_ago = now - datetime.timedelta(hours=3)
print(f"3時間前のdatetime: {three_hours_ago}")

# 5. フォーマット変換 (datetimeオブジェクト -> 文字列)
# 例えば「2024/04/15 10:30:00」のような形式に変換
formatted_dt = specific_dt.strftime("%Y/%m/%d %H:%M:%S")
print(f"フォーマットされた文字列: {formatted_dt}")

# 6. 文字列からdatetimeオブジェクトへの変換 (strptimeを使用)
# 上で作成した文字列をdatetimeオブジェクトに戻してみる
string_dt = "2023-01-20 14:00:00"
parsed_dt = datetime.datetime.strptime(string_dt, "%Y-%m-%d %H:%M:%S")
print(f"文字列からパースされたdatetime: {parsed_dt}")

このコードを実行すると、現在の日付と時刻、特定の日付の生成、そして日時計算やフォーマット変換の基本的な流れを掴んでいただけると思います。

datetimeオブジェクトって、まるで時間の情報を持った特別な箱みたいで可愛いですよね!

特に、strftimestrptimeは、日付や時刻の表示形式を自在に操る上で非常に重要です。さまざまなフォーマットコード(例: %Yは年、%mは月など)を覚えると、表現の幅がぐっと広がりますよ。

みーちゃんのワンポイント

datetimeを使う上で最も大切なのは、日付や時刻を「数値」ではなく「オブジェクト」として扱うという考え方です。これにより、時間に関する演算が格段に簡単になります。また、タイムゾーンを意識する場面では、pytzなどのライブラリと組み合わせて使うとより安全です。