Python datetimeモジュール完全ガイド:日付、時刻、timedelta、strftime徹底解説
Pythonのdatetimeライブラリは、日付、時刻、時間間隔を操作するための堅牢なツールセットを提供します。生の文字列やタイムスタンプではなくオブジェクトとして扱うことで、開発者は正確な計算とフォーマットを自信を持って行えます。
主要なdatetimeクラス
- date – 年、月、日を扱う。
- time – 特定の日付に依存しない時、分、秒、マイクロ秒を扱う。
- datetime – 日付と時刻を単一オブジェクトに統合。
- timedelta – 期間を表現し、日付・時刻の加減算を可能にする。
- tzinfo – タイムゾーンサポートの抽象基底クラス。
導入:インポートとインスタンス化
操作の前に必要なクラスをインポート:
from datetime import date, time, datetime, timedelta
dateオブジェクトのインスタンス化:
today = date.today() print(today) # 例: 2024-04-19
現在の日付と時刻
datetime.now()メソッドで現在のローカル日時を取得:
now = datetime.now() print(now) # 2024-04-19 14:35:12.123456
時刻成分だけを抽出:
current_time = now.time() print(current_time) # 14:35:12.123456
strftimeによる出力フォーマット
strftimeメソッドはdatetimeオブジェクトをフォーマットコードを用いて人間可読な文字列に変換:
now.strftime("%Y-%m-%d %H:%M:%S") # "2024-04-19 14:35:12"
よく使うディレクティブ:
%Y– 4桁の年%y– 2桁の年%a– 省略曜日名%A– 完全な曜日名%b– 省略月名%B– 完全な月名%d– 日(01-31)%H– 時(00-23)%I– 時(01-12)%M– 分(00-59)%S– 秒(00-59)%p– AMまたはPM
例:
# 12時間制(AM/PM付き)
print(now.strftime("%I:%M:%S %p"))
# 24時間制
print(now.strftime("%H:%M"))
timedeltaの活用
timedeltaは時間の幅を表現し、日付・日時との算術演算をサポート:
# 365日のtimedeltaを作成 one_year = timedelta(days=365) # 今から1年後 future_date = datetime.now() + one_year print(future_date)
イベントまでの日数計算(例:正月):
today = date.today()
new_year = date(today.year, 1, 1)
if new_year < today:
new_year = date(today.year + 1, 1, 1)
print("New Year is in", (new_year - today).days, "days")
else:
print("New Year is in", (new_year - today).days, "days")
総合例
以下はコア機能をデモする即実行可能なスクリプト:
from datetime import datetime, date, timedelta
# 現在の日時
now = datetime.now()
print("Now:", now)
# フォーマット例
print("ISO format:", now.strftime("%Y-%m-%d %H:%M:%S"))
print("12-hour time:", now.strftime("%I:%M:%S %p"))
# timedelta操作
one_week = timedelta(weeks=1)
print("One week from now:", now + one_week)
# 正月までの日数
today = date.today()
new_year = date(today.year + (today < date(today.year, 1, 1)), 1, 1)
print("Days until New Year:", (new_year - today).days)
まとめ
Pythonのdatetimeモジュールは、日付と時刻操作のための強力で型安全なツールを提供します:
date,time,datetimeオブジェクトで明確かつ明示的な表現。strftimeで柔軟かつロケール対応のフォーマット。timedeltaで算術演算とインターバル計算。- 使用前に関連クラスをインポートしないとインタプリタがエラーを発生させることに注意。
これらのツールは、シンプルなタイムスタンプから複雑なスケジューリングロジックまで、幅広いタスクで不可欠です。
Python
- Python datetimeマスター:日付・時刻・タイムゾーン実践ガイド
- Pythonで現在の日付と時刻を取得する実践ガイド
- Pythonで現在時刻とタイムゾーンデータを簡単に取得する
- Pythonのtimeモジュールをマスター:関数、構造体、実践例
- Pythonのtime.sleep()をマスター:ベストプラクティス、マルチスレッド、実例
- Python print()関数の実践ガイド:基本から応用まで
- Python str.count()マスター:文字と部分文字列のカウント実例集
- Python format()文字列を明確な例でマスター
- Python String.find()メソッド完全ガイド:構文、例、代替手法
- Pythonラムダ関数をマスターする:実例とベストプラクティス
- Python round()関数を実例で徹底解説