
Pythonのtimeモジュールを用いて時刻データ扱う方法をまとめました。
目次
timeモジュール
timeモジュールは、時刻の取得、変換、プログラムの一時停止をするためのモジュールで、経過時間の計算やプログラムの一時停止をするのに便利です。
ただし、日付の表示や日付の計算は苦手なため、日付関係の処理はdatetimeモジュールを使用したほうが便利です。
datetimeモジュールについては、以下の記事を参照してください。
モジュールのインポート
timeモジュールは組み込みモジュールのため、インストールは不要です。
例:モジュールのインポート
import time
時刻の用語について
時刻の処理をするうえでいくつか特殊な用語が出てきます。重要になる用語を以下にまとめました。
エポック(epoch)秒 | 1970年1月1日0時0分0秒から経過した秒数のこと。 |
---|---|
UTC | 協定世界時のこと。以前はグリニッジ標準時やGMTと呼ばれていた。 |
ローカル時間 | 地域ごとに設定された時間のこと。日本はUTC+9時間に設定されている。 |
プログラムの一時停止
プログラムを一時停止させるには、sleep関数を使用します。
sleep関数に停止させる秒数を渡すことで、入力した秒数だけプログラムが一時停止します。
例:プログラムを3秒停止
import time time.sleep(3)
時刻データの取得
現在のエポック秒を取得
現在のエポック秒取得には、time関数を使用します。
処理にかかる時間を計測するのに非常に便利で、timeモジュールで最も使用されると思われる関数の一つです。
例:処理にかかる時間を計算
import time t_start = time.time() for n in range(3): time.sleep(1) t_stop = time.time() print(t_stop - t_start)
出力:3.053400754928589
但し、出力の数値はPCの処理スピードが影響するため、環境によって変化します。
UTCを取得
UTCを取得するには、gmtime関数を使用します。
gmtime関数は、UTCをstruct_time型で返します。
struct_time型は名前付きタプルと呼ばれるオブジェクトで、インデックス番号と属性名の両方で値を呼び出すことができます。
インデックス番号、対応する属性名、内容について、下表にまとめました。
インデックス | 属性名 | 内容 |
---|---|---|
0 | tm_year | 西暦 |
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, 月曜が0に対応) |
7 | tm_yday | 日数(1~366) |
8 | tm_isdst | 夏時間(1:yes, 2:no, 3:不明) |
なし | tm_zone | タイムゾーンの短縮名 |
なし | tm_gmtoff | UTCからのオフセット(秒) |
例:UTCを取得し、年、月、日を表示(属性名)
import time u = time.gmtime() print(u.tm_year) print(u.tm_mon) print(u.tm_mday)
出力:
2019 6 10
例:UTCを取得し、年、月、日を表示(インデックス)
import time u = time.gmtime() print(u[0]) print(u[1]) print(u[2])
出力:
2019 6 10
時刻データの変換
エポック秒をローカル時間に変換
エポック秒をローカル時間に変換するには、localtime関数を使用します。
localtime関数にエポック秒を渡すことで、ローカル時間をstruct_time型で取得することができます。
例:エポック秒をローカル時間に変換
import time t = time.time() t_local = time.localtime(t) print(t_local.tm_year)
出力:2019
エポック秒を日時の文字列に変換
エポック秒を日時の文字列に変換するには、ctime関数を使用します。
ctime関数にエポック秒を渡すことで、理解しやすい日時の文字列を取得できます。
例:エポック秒を日時の文字列に変換
import time t = time.time() t_moji = time.ctime(t) print(t_moji)
出力:Mon Jun 10 22:08:48 2019
struct_time型を日時の文字列に変換
struct_time型を文字列に変換するには、asctime関数を使用します。
asctime関数にstruct_time型を渡すことで、理解しやすい日時の文字列を取得できます。
例:struct_time型を日時の文字列に変換
import time t_s = time.gmtime() t_moji = time.asctime(t_s) print(t_moji)
出力:Mon Jun 10 13:14:15 2019