Pythonのdatetimeモジュール入門:日付と時間の操作

この記事では、Pythonで日付と時刻を扱うための標準ライブラリdatetimeモジュールの基本的な使い方を解説します。現在時刻の取得、特定の日時の表現、時間差の計算、そして日付と文字列の相互変換について説明します。


目次

datetimeオブジェクト

datetimeモジュールの中核となるのがdatetimeオブジェクトです。これは、特定の日付と時刻(年、月、日、時、分、秒、マイクロ秒)を保持します。

datetimeオブジェクトの作成 datetime.datetime.now()で現在のローカルな日時を取得できます。また、datetime.datetime(year, month, day, ...)のように特定の日時を指定して生成することも可能です。

import datetime
import time

# 現在の日時を取得
now = datetime.datetime.now()
print(f"現在日時: {now}")

# 特定の日時を生成
dt = datetime.datetime(2025, 10, 31, 13, 30, 0)
print(f"指定日時: {dt}")

# 各要素にアクセス
print(f"年: {dt.year}, 月: {dt.month}, 日: {dt.day}")
print(f"時: {dt.hour}, 分: {dt.minute}, 秒: {dt.second}")

# Unixタイムスタンプからdatetimeオブジェクトを生成
timestamp = 1663322400 # 2022-09-16 19:00:00 JST
dt_from_ts = datetime.datetime.fromtimestamp(timestamp)
print(f"タイムスタンプから: {dt_from_ts}")

datetimeオブジェクトの比較 datetimeオブジェクト同士は、比較演算子(><==など)を使って比較できます。

halloween_2025 = datetime.datetime(2025, 10, 31, 0, 0, 0)
christmas_2025 = datetime.datetime(2025, 12, 25, 0, 0, 0)

print(f"クリスマスはハロウィンより後か: {christmas_2025 > halloween_2025}") # 出力: True

timedeltaデータ型

timedeltaオブジェクトは、二つの日時の間の差、すなわち期間を表します。

datetimeオブジェクトにtimedeltaオブジェクトを足したり引いたりすることで、過去や未来の日時を簡単に計算できます。

import datetime

# 30日と12時間と30分の期間を定義
delta = datetime.timedelta(days=30, hours=12, minutes=30)
print(f"期間の合計秒数: {delta.total_seconds()}")

# 現在日時に期間を足す
now = datetime.datetime.now()
future_date = now + delta
print(f"現在: {now}")
print(f"30日と12時間30分後: {future_date}")

# 特定の日時から期間を引く
past_date = now - delta
print(f"30日と12時間30分前: {past_date}")

datetimeオブジェクトと文字列の相互変換

strftime()datetimeオブジェクトを文字列に変換 strftime()メソッドは、datetimeオブジェクトを、指定した書式の文字列に変換します。書式は%Y(4桁の年)などの書式指定コードで定義します。

コード意味
%Y4桁の西暦年2025
%y2桁の西暦年25
%m2桁の月(0埋め)09
%B月の完全な名前September
%b月の省略名Sep
%d2桁の日(0埋め)16
%A曜日の完全な名前Tuesday
%a曜日の省略名Tue
%H24時間表記の時19
%I12時間表記の時07
%p午前/午後AM / PM
%M2桁の分30
%S2桁の秒05
%%%文字自体%
import datetime

dt = datetime.datetime(2025, 9, 16, 19, 30, 5)

# 書式を指定して文字列に変換
print(dt.strftime('%Y/%m/%d %H:%M:%S'))     # 出力: 2025/09/16 19:30:05
print(dt.strftime('%I:%M %p'))             # 出力: 07:30 PM
print(dt.strftime("%A, %B %d, %Y"))       # 出力: Tuesday, September 16, 2025

strptime():文字列をdatetimeオブジェクトに変換 datetime.datetime.strptime()strftime()の逆で、書式を指定して文字列をdatetimeオブジェクトに変換(パース)します。

import datetime

date_string = "2025-09-16 19:30:05"
format_code = "%Y-%m-%d %H:%M:%S"
datetime_obj = datetime.datetime.strptime(date_string, format_code)

print(datetime_obj)        # 出力: 2025-09-16 19:30:05
print(datetime_obj.year)   # 出力: 2025

文字列とformat_codeの書式が一致していないとValueErrorが発生します。

まとめ

datetimeモジュールは、日付と時刻を扱うための包括的な機能を提供します。datetimeオブジェクトで特定の日時を、timedeltaオブジェクトで期間を表現し、これらのオブジェクト間で演算を行うことができます。また、strftime()strptime()を使うことで、プログラムで扱いやすいオブジェクト形式と、人間が読みやすい文字列形式とを自在に相互変換できます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

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

目次