以下の内容はhttps://pydocument.hatenablog.com/entry/2023/04/17/235151より取得しました。


Pythonの日時処理: timeモジュールとdatetimeモジュールの違い

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の詳しい使い方は下記の記事でも紹介しています。

pydocument.hatenablog.com

pydocument.hatenablog.com

日付と時刻の演算

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]

click.linksynergy.com

click.linksynergy.com




以上の内容はhttps://pydocument.hatenablog.com/entry/2023/04/17/235151より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14