Pythonで日付や時刻を扱うには、標準ライブラリのtimeモジュールとdatetimeモジュールを使用します。これらのモジュールは似ていますが、それぞれ異なる機能と用途を持っています。この記事では、各モジュールの違い、使い分け、具体的な利用方法について解説します。
timeモジュール
timeモジュールは、主に時刻の取得と経過時間の計測に焦点を当てたモジュールです。システム時刻に基づいた処理を行います。
- 主な機能:
- 現在時刻の取得 (UNIXタイムスタンプ形式)
- スリープ (プログラムの実行を一時停止)
- 経過時間の計測
timeモジュールは、時刻をUNIXタイムスタンプ(エポック秒: 1970年1月1日0時0分0秒(UTC)からの経過秒数)として扱います。
現在時刻の取得 (UNIXタイムスタンプ)
import time current_time = time.time() print(f"UNIXタイムスタンプ: {current_time}")
time.time()関数は、現在のUNIXタイムスタンプを浮動小数点数で返します。
スリープ
import time print("処理開始") time.sleep(5) # 5秒間待機 print("処理再開")
time.sleep()関数は、指定された秒数だけプログラムの実行を一時停止します。
datetimeモジュール
datetimeモジュールは、日付と時刻の情報をオブジェクトとして扱い、より詳細な操作を可能にします。
- 主な機能:
- 日付と時刻のオブジェクトの作成 (年、月、日、時、分、秒、マイクロ秒)
- 日付や時刻の演算 (加算、減算)
- 日付や時刻の比較
- 日付や時刻のフォーマット (文字列との相互変換)
- タイムゾーンの考慮
現在の日付と時刻の取得
import datetime now = datetime.datetime.now() print(f"現在の日時: {now}") print(f"年: {now.year}, 月: {now.month}, 日: {now.day}")
datetime.datetime.now()は、現在の日時を表すdatetimeオブジェクトを返します。datetimeオブジェクトは、年(year)、月(month)、日(day)などの属性を持ち、各要素にアクセスできます。
日付のみ取得したい場合は、datetime.date.today()を使います。
datetimeの詳しい使い方は下記の記事でも紹介しています。
日付と時刻の演算
import datetime now = datetime.datetime.now() one_day_later = now + datetime.timedelta(days=1) # 1日後 one_hour_ago = now - datetime.timedelta(hours=1) # 1時間前 print(f"1日後: {one_day_later}") print(f"1時間前: {one_hour_ago}")
datetime.timedeltaオブジェクトを使うと、日付や時刻の差分を計算できます。
日付と時刻のフォーマット
import datetime now = datetime.datetime.now() # datetimeオブジェクトから文字列へ formatted_date = now.strftime("%Y-%m-%d %H:%M:%S") print(f"フォーマットされた日付: {formatted_date}") # 文字列からdatetimeオブジェクトへ date_string = "2024-01-01 12:00:00" parsed_date = datetime.datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S") print(f"解析された日付: {parsed_date}")
strftime()メソッド:datetimeオブジェクトを指定されたフォーマットの文字列に変換します。strptime()メソッド: 指定されたフォーマットの文字列をdatetimeオブジェクトに変換します。
timeモジュールとdatetimeモジュールの使い分け
| 用途 | 推奨モジュール | 理由 |
|---|---|---|
| 単純な時刻の取得、経過時間の計測 | time |
軽量でシンプル。UNIXタイムスタンプによる処理に適している。 |
| 日付や時刻の情報を個別に扱いたい、日付計算を行いたい | datetime |
datetimeオブジェクトが日付と時刻の情報をまとめて扱い、属性やメソッドを使った操作が容易。 |
| 特定のフォーマットで日付や時刻を文字列として扱いたい | datetime |
strftime()とstrptime()で柔軟なフォーマット変換が可能。 |
| タイムゾーンを考慮した処理が必要 | datetime |
(pytzなどの外部ライブラリと組み合わせて)タイムゾーンを考慮した日付時刻の計算や変換ができます。 (Python 3.9以降ではzoneinfoモジュールが利用可能) |
| プログラムの実行を指定時間停止させたい | time |
time.sleep()関数で指定秒数処理を停止できる。 |
まとめ
Pythonで日付や時刻を扱う際は、timeモジュールとdatetimeモジュールの特性を理解し、目的に応じて使い分けることが重要です。
- 時刻の取得、経過時間の計測:
timeモジュール - 日付・時刻の詳細な操作、計算、フォーマット:
datetimeモジュール
この使い分けにより、効率的かつ正確に日付と時刻の処理を行うことができます。 日付の計算ではdatetimeモジュールを使用し、経過時間の測定にはtimeモジュールを使用するなど、状況に応じて使い分けることが必要です。
最後にPythonの基礎学習に利用できるUdemyのサイトを紹介します。
[PR]