Python Datetime: 日付と時刻の操作

Python で日付、時刻、タイムゾーン、計算を処理する方法を学びます。 datetime と timedelta を使用した書式設定、解析、演算をマスターします。

エディターで試してみる

概要

日付と時刻の処理は、うるう年、夏時間の調整、およびタイムゾーン形式の違いにより、ソフトウェア開発における悪名高い課題です。 Python は、組み込みの「datetime」モジュールを使用してこれらの課題を解決します。このモジュールは、時間データを明確に表現して操作し、日付の計算を簡単にする、「date」、「time」、「datetime」、「timezone」などの堅牢なオブジェクト クラスのセットを提供します。

最も一般的なタスクの 1 つは、日付を文字列に変換 (書式設定) し、文字列を日付に変換 (解析) することです。 Python はこれに 2 つの主なメソッドを使用します。 `.strftime()` (文字列フォーマット時間) は、フォーマット コード (年を表す `%Y`、月を表す `%m`、日を表す `%d` など) を使用して datetime オブジェクトを読み取り可能な文字列に変換します。逆に、`datetime.strptime()` (文字列解析時間) は、一致する形式テンプレートに基づいて、日時オブジェクトに入力された生の文字列を解析します。これは、ログまたは API 入力を読み取るときに不可欠です。

日付計算の実行も、「timedelta」オブジェクトを使用して完全にサポートされています。 「timedelta」は時間の長さを表します (例: 7 日、4 時間)。 「datetime」に「timedelta」を加算または減算して、過去または将来の日付を計算できます (有効期限の決定など)。複数のタイムゾーンを扱う場合、異なるサーバーの場所間でも日付比較の正確性を確保するには、タイムゾーン対応オブジェクト (`zoneinfo` や `timezone.utc` など) を使用することが重要です。

コードと実行の出力

文字列を日時オブジェクトに解析し、timedelta を使用して将来の期限を計算します。

from datetime import datetime, timedelta

# Define a specific fixed base date and time (for deterministic runs)
base_date = datetime(2026, 5, 25, 23, 45, 50)
print(f"Base Date/Time: {base_date}")

# Format datetime as string
formatted = base_date.strftime("%Y-%m-%d %H:%M:%S")
print(f"Formatted String: {formatted}")

# Parse string to datetime
date_str = "2026-12-25"
parsed_date = datetime.strptime(date_str, "%Y-%m-%d")
print(f"Parsed Date: {parsed_date}")

# Date arithmetic with timedelta
ten_days_later = base_date + timedelta(days=10)
print(f"Date 10 days later: {ten_days_later.strftime('%Y-%m-%d')}")
端子出力
Base Date/Time: 2026-05-25 23:45:50
Formatted String: 2026-05-25 23:45:50
Parsed Date: 2026-12-25 00:00:00
Date 10 days later: 2026-06-04

段階的な実装

  • トライアルの有効期限と請求日の計算
  • サーバーアクセスログ内のタイムスタンプ文字列の解析
  • 自動化された cron ジョブまたは定期的なレポートのスケジュール設定

よくある質問

ナイーブな日時オブジェクトと認識された日時オブジェクトとは何ですか?

単純な datetime オブジェクトにはタイムゾーン情報が含まれていませんが、認識された datetime オブジェクトにはタイムゾーン オフセットが含まれているため、国際時間の計算が安全になります。

2 つの日付の差を計算するにはどうすればよいですか?

ある datetime オブジェクトを別の datetime オブジェクトから減算すると、それらの間の正確な期間を表す timedelta オブジェクトが返されます。

関連トピック

推奨される Python リソース

関連するインタラクティブなチュートリアル、チートシート、コード比較で知識を深めてください。