Python Code Notes

Information by python engineer

timeモジュール 時刻データを扱う方法 Python

f:id:vigilantPotato:20190610222616p:plain

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