Categories: python

Pythonで時間を操作!datetime・time・calendarモジュールを使いこなす実践ガイド

Pythonは日付や時刻の処理を簡単に行える便利なプログラミング言語です。特に「datetime」「time」「calendar」などの標準ライブラリを使えば、現在時刻の取得から日時の計算、さらにはスケジュール管理まで、幅広いニーズに応えることができます。この記事では、Pythonでの時間処理の基本から応用までを、実際のコードとともにわかりやすく解説していきます。業務自動化や日付管理のツール開発を検討している方にも役立つ内容です。


datetimeモジュールの基本

Pythonで時間処理を行う際、まず覚えておきたいのがdatetimeモジュールです。日付と時刻の操作に最もよく使われます。

from datetime import datetime

# 現在の日時を取得
now = datetime.now()
print(now) # 2025-05-07 15:30:45.123456

このように、datetime.now()を使えば、年・月・日・時・分・秒まで取得可能です。日付だけが必要な場合は.date()、時刻だけが必要なら.time()を使います。

print(now.date())  # 2025-05-07
print(now.time()) # 15:30:45.123456

日時のフォーマットを変更する

ユーザーに日時をわかりやすく表示したい場合には、strftime(format)を使って任意の形式に変換できます。

print(now.strftime("%Y/%m/%d %H:%M:%S"))  # 2025/05/07 15:30:45

逆に、文字列を日時型に変換するにはstrptimeを使います。

dt = datetime.strptime("2025-05-07 14:00", "%Y-%m-%d %H:%M")
print(dt) # 2025-05-07 14:00:00

日時の加減算:timedeltaの活用

「1週間後」「3日前」など、日時の計算にはtimedeltaが役立ちます。

from datetime import timedelta

# 明日の日付
tomorrow = now + timedelta(days=1)
print(tomorrow)

# 1時間前
one_hour_ago = now - timedelta(hours=1)
print(one_hour_ago)

また、2つの日時の差も簡単に計算できます。

future = datetime(2025, 12, 31)
diff = future - now
print(diff.days) # あと何日か

timeモジュールで時間の測定や待機を制御

timeモジュールは、処理の一時停止や処理時間の測定などに使います。

import time

start = time.time()
time.sleep(2) # 2秒停止
end = time.time()

print(f"処理時間: {end - start:.2f}秒") # 処理時間: 2.00秒

このように、time.sleep()は待機処理を入れたいときに便利です。


calendarモジュールで月間カレンダーを表示

スケジュールアプリや日程表を作成する際に使えるのがcalendarモジュールです。

import calendar

# 2025年5月のカレンダーを出力
print(calendar.month(2025, 5))

曜日のインデックスや、うるう年の判定もできます。

print(calendar.weekday(2025, 5, 7))  # 2(=水曜日)
print(calendar.isleap(2024)) # True(2024年はうるう年)

UNIXタイムスタンプとの変換

UNIX時間(1970年1月1日からの経過秒数)はシステムや外部APIとの連携でよく使われます。

# datetime → UNIX時間
timestamp = now.timestamp()
print(timestamp)

# UNIX時間 → datetime
dt_from_ts = datetime.fromtimestamp(timestamp)
print(dt_from_ts)

このように相互変換も非常に簡単にできます。


日本時間への対応(タイムゾーン処理)

Pythonはデフォルトでタイムゾーンが「なし(naive)」のため、pytzなどのライブラリを使って明示的に指定する必要があります。

import pytz

tokyo = pytz.timezone("Asia/Tokyo")
now_tokyo = datetime.now(tokyo)
print(now_tokyo) # タイムゾーン付きの日時

他国の時間に変換したり、UTCとの変換を行いたい場合にも役立ちます。


まとめ:時間処理を自在に使いこなそう

Pythonには日付・時間を扱うための強力な標準ライブラリが揃っており、シンプルな操作で高度な処理が可能です。以下のような使い分けを覚えておくと便利です。

  • datetime:日付や時刻の取得・操作・フォーマット
  • timedelta:日時の加減算
  • time:処理時間や待機処理
  • calendar:カレンダー出力や曜日判定
  • pytz(またはzoneinfo):タイムゾーン処理

業務システムの開発、スケジュール管理、ログの解析など、さまざまな場面で役立つPythonの時間処理。ぜひ、この記事のコード例を参考に、実際に手を動かしてみてください。

upandup

Web制作の記事を中心に、暮らし、ビジネスに役立つ情報を発信します。 アフィリエイトにも参加しています。よろしくお願いいたします。