Python で datetime を使用して日付と時刻を処理する方法

日付と時刻の処理はプログラミングでよく行われるタスクであり、Python には日付と時刻を操作するための datetime という組み込みモジュールが用意されています。このモジュールは日付、時刻、および時間間隔を操作するためのクラスを提供し、日付の計算、日付の書式設定、およびタイムゾーンの管理を容易にします。この記事では、datetime モジュールを使用して Python で日付と時刻を効果的に処理する方法について説明します。

datetime を使い始める

datetime モジュールは、datetime.datedatetime.timedatetime.datetimedatetime.timedeltadatetime.tzinfo などのいくつかのクラスを提供します。これらのクラスを使用すると、日付、時刻、および時間間隔を操作できます。

datetime モジュールの使用を開始するには、次のようにインポートする必要があります。

import datetime

日付の操作

date クラスを使用して日付オブジェクトを作成できます。これには、年、月、日の 3 つのパラメータが必要です。

from datetime import date

# Create a date object
my_date = date(2023, 9, 4)
print(my_date)  # Output: 2023-09-04

年、月、日など、日付の個々の構成要素にアクセスすることもできます。

print(my_date.year)   # Output: 2023
print(my_date.month)  # Output: 9
print(my_date.day)    # Output: 4

時間の使い方

time クラスを使用すると、時間オブジェクトを作成できます。時間、分、秒、マイクロ秒 (オプション) が必要です。

from datetime import time

# Create a time object
my_time = time(14, 30, 45)
print(my_time)  # Output: 14:30:45

日付と同様に、時間オブジェクトの個々のコンポーネントにアクセスできます。

print(my_time.hour)   # Output: 14
print(my_time.minute) # Output: 30
print(my_time.second) # Output: 45

datetime で日付と時刻を組み合わせる

datetime クラスは、日付と時刻の両方を 1 つのオブジェクトに結合します。年、月、日、時、分、秒、マイクロ秒 (オプション) を渡すことで、datetime オブジェクトを作成できます。

from datetime import datetime

# Create a datetime object
my_datetime = datetime(2023, 9, 4, 14, 30, 45)
print(my_datetime)  # Output: 2023-09-04 14:30:45

datetime オブジェクトの日付と時刻の両方のコンポーネントにアクセスできます。

print(my_datetime.date())  # Output: 2023-09-04
print(my_datetime.time())  # Output: 14:30:45

現在の日付と時刻を取得する

datetime モジュールは、現在の日付、時刻、またはその両方を取得するための便利なメソッドを提供します。

# Current date
today = date.today()
print(today)  # Output: (current date)

# Current date and time
now = datetime.now()
print(now)  # Output: (current date and time)

timedelta による日付演算

timedelta クラスは、2 つの日付または時刻の差である期間を表します。これにより、日付に日数を加算または減算するなど、日付演算を実行できます。

from datetime import timedelta

# Create a timedelta object
delta = timedelta(days=7)

# Add 7 days to the current date
future_date = today + delta
print(future_date)

2 つの日付の差を計算することもできます。

# Calculate the difference between two dates
date1 = date(2023, 9, 4)
date2 = date(2023, 9, 11)
difference = date2 - date1
print(difference.days)  # Output: 7

日付と時刻の書式設定

strftime() メソッドを使用すると、日付または時刻を文字列にフォーマットできます。このメソッドは、希望するフォーマットを指定するためのフォーマット コードを受け取ります。

# Format a date object
formatted_date = today.strftime('%B %d, %Y')
print(formatted_date)  # Output: September 04, 2023

一般的なフォーマット コードは次のとおりです。

  • %Y - 年(例:2023)
  • %m - ゼロ埋めされた10進数としての月(例:09)
  • %d - ゼロ埋めされた 10 進数での月内の日 (例: 04)
  • %H - ゼロ埋めされた 10 進数で表した時間 (24 時間制) (例: 14)
  • %M - ゼロ埋めされた10進数としての分(例:30)
  • %S - ゼロ埋めされた10進数としての秒(例:45)

文字列から日付を解析する

strptime() メソッドを使用すると、日付文字列の形式を指定して、文字列を datetime オブジェクトに変換できます。

# Parse a date from a string
date_str = '2023-09-04'
parsed_date = datetime.strptime(date_str, '%Y-%m-%d')
print(parsed_date)

タイムゾーンの操作

datetime モジュールは、pytz ライブラリを使用して、タイム ゾーンに対応した datetime オブジェクトをサポートします。タイム ゾーンを操作するには、pytz をインストールする必要があります。

pip install pytz

次に、datetime オブジェクトにタイムゾーンを割り当てることができます。

from datetime import datetime
import pytz

# Set timezone to UTC
utc_zone = pytz.utc
now_utc = datetime.now(utc_zone)
print(now_utc)

結論

Python の datetime モジュールは、日付と時刻のオブジェクトの作成、書式設定、解析、および計算の実行など、日付と時刻を処理するための強力なツールを提供します。日付の操作、タイム ゾーンの操作、日付と時刻の表示書式設定など、必要な作業はすべて、datetime モジュールで対応できます。