Pythonのtimeモジュールをマスター:関数、構造体、実践例
Python timeモジュール
Pythonの標準timeモジュールを探求し、そのコア関数を学び、実世界での使用例を明確な例で示します。
Pythonのtimeモジュールは、タイムスタンプの操作、スケジューリング、経過時間の測定のためのツールを提供します。関数を使用する前に、モジュールをインポートします:
import time
time.time()
time()関数は、Unixエポック(1970年1月1日00:00:00 UTC)からの秒数として現在時刻を返します。Unix系システムではこのエポック値は固定ですが、Windowsでは同じ時点から派生します。
import time
seconds = time.time()
print("エポックからの秒数 =", seconds)
time.ctime()
POSIXタイムスタンプ(エポックからの秒数)をローカルタイムゾーンの読みやすい文字列に変換します。
import time
seconds = 1545925769.9618232
local_time = time.ctime(seconds)
print("ローカル時刻:", local_time)
典型的な出力:
ローカル時刻: Thu Dec 27 15:49:29 2018
time.sleep()
指定された秒数だけ現在のスレッドの実行を遅延させます。
import time
print("これは即座に表示されます。")
time.sleep(2.4)
print("これは2.4秒後に表示されます。")
詳細については、Python sleep()のドキュメントを参照してください。
time.struct_timeクラス
gmtime()やasctime()などの関数は、カレンダー時刻を表す9要素のタプルであるtime.struct_timeオブジェクトを返したり受け取ったりします。
time.struct_time(tm_year=2018, tm_mon=12, tm_mday=27, tm_hour=6, tm_min=35, tm_sec=17, tm_wday=3, tm_yday=361, tm_isdst=0)
| インデックス | 属性 | 値の範囲 |
|---|---|---|
| 0 | tm_year | 0000 … 9999 |
| 1 | tm_mon | 1 … 12 |
| 2 | tm_mday | 1 … 31 |
| 3 | tm_hour | 0 … 23 |
| 4 | tm_min | 0 … 59 |
| 5 | tm_sec | 0 … 61 |
| 6 | tm_wday | 0(月)… 6(日) |
| 7 | tm_yday | 1 … 366 |
| 8 | tm_isdst | 0, 1, または -1 |
要素にはインデックスまたは属性名のいずれかでアクセスできます。
time.localtime()
POSIXタイムスタンプをローカルタイムゾーンで表現されるstruct_timeに変換します。引数を省略すると現在時刻が使用されます。
import time
result = time.localtime(1545925769)
print("result:", result)
print("\n年:", result.tm_year)
print("tm_hour:", result.tm_hour)
典型的な出力:
result: time.struct_time(tm_year=2018, tm_mon=12, tm_mday=27, tm_hour=15, tm_min=49, tm_sec=29, tm_wday=3, tm_yday=361, tm_isdst=0) 年: 2018 tm_hour: 15
time.gmtime()
localtime()と同様ですが、UTC(GMT)時刻を返します。引数を省略すると現在のエポック値がデフォルトで使用されます。
import time
result = time.gmtime(1545925769)
print("result:", result)
print("\n年:", result.tm_year)
print("tm_hour:", result.tm_hour)
典型的な出力:
result: time.struct_time(tm_year=2018, tm_mon=12, tm_mday=28, tm_hour=8, tm_min=44, tm_sec=4, tm_wday=4, tm_yday=362, tm_isdst=0) 年: 2018 tm_hour: 8
time.mktime()
ローカルstruct_time(またはその9タプル)をPOSIXタイムスタンプに戻します。これはlocaltime()の実質的な逆操作です。
import time
t = (2018, 12, 28, 8, 44, 4, 4, 362, 0)
local_time = time.mktime(t)
print("ローカル時刻:", local_time)
ラウンドトリップを示す例:
import time
seconds = 1545925769
t = time.localtime(seconds)
print("t1:", t)
s = time.mktime(t)
print("\ns:", s)
典型的な出力:
t1: time.struct_time(tm_year=2018, tm_mon=12, tm_mday=27, tm_hour=15, tm_min=49, tm_sec=29, tm_wday=3, tm_yday=361, tm_isdst=0) s: 1545925769.0
time.asctime()
struct_time(またはタプル)を人間が読める文字列にフォーマットします。
import time
t = (2018, 12, 28, 8, 44, 4, 4, 362, 0)
result = time.asctime(t)
print("結果:", result)
典型的な出力:
結果: Fri Dec 28 08:44:04 2018
time.strftime()
struct_timeをフォーマットコードに基づいてカスタム文字列にフォーマットします。
import time
named_tuple = time.localtime()
time_string = time.strftime("%m/%d/%Y, %H:%M:%S", named_tuple)
print(time_string)
典型的な出力:
12/28/2018, 09:47:41
一般的なフォーマットコードには以下が含まれます:
%Y– 完全な年(例:2018)%m– 月 01-12%d– 日 01-31%H– 時 00-23%M– 分 00-59%S– 秒 00-61(うるう秒)
その他のフォーマットコードについては、time.strftime()のドキュメントを参照してください。
time.strptime()
指定されたフォーマットに従って文字列をパースし、struct_timeを返します。
import time
time_string = "21 June, 2018"
result = time.strptime(time_string, "%d %B, %Y")
print(result)
典型的な出力:
time.struct_time(tm_year=2018, tm_mon=6, tm_mday=21, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=172, tm_isdst=-1)
Python
- Python キーワードと識別子: 予約語と命名規則をマスター
- Python データ型マスター: 実践ガイド
- Python 演算子完全マスター: 包括的ガイド
- Python 関数引数完全マスター: 位置引数・キーワード引数・デフォルト引数
- Python モジュール: 作成・インポート・高度な活用
- Python辞書完全ガイド:作成、操作、高度なテクニック
- Python正規表現(reモジュール)実践ガイド
- Pythonで現在の日付と時刻を取得する実践ガイド
- Pythonで現在時刻とタイムゾーンデータを簡単に取得する
- Pythonのtime.sleep()をマスター:ベストプラクティス、マルチスレッド、実例
- Python timeit():実行時間測定の実例付きガイド