AI Technology Community
4.6、Python timeモジュールの使用方法
実際のアプリケーションでは、あるイベントが発生した時間、あるリソースの有効期限、ある時間が週末かどうかなど、いくつかの時間情報を取得する必要がよくあります。
Pythonには、システムに付属しているtimeライブラリがあり、このライブラリには、時間や日付を操作するためのいくつかのユーティリティ関数が用意されています。
timeライブラリは自動的に読み込まれません。これを使用する場合は、まず以下のようにインポートする必要があります。
import time
時間表現方法
Pythonでは、2種類の時間表現方法が使用されています。1つは、1970年1月1日0時からの経過秒数で時間を表す方法です。もう1つは、年、月、日、時、分、秒などで表す一般的な方法で、以降では時分秒表現と呼びます。
秒数で時間を表す場合は、time()関数を使用して現在の時間を取得できます。
>>> import time >>> time.time() 1555891997.224464
時分秒で時間を表す場合は、localtime()関数を使用して現在のローカル時間を取得できます。
>>> import time >>> time.localtime() time.struct_time(tm_year=2019, tm_mon=4, tm_mday=22, tm_hour=8, tm_min=10, tm_sec=31, tm_wday=0, tm_yday=112, tm_isdst=0)
上記の例からわかるように、年は整数で表され、例えば2019です。月も整数で表され、範囲は1~12で、それぞれ1月から12月を表します。日も整数で表され、範囲は1~31で、それぞれ1日から31日に対応します。時も整数で表され、範囲は0~59です。分も整数で表され、範囲は0~59です。秒も整数で表され、範囲は0~59です。
また、tm_wdayフィールドは曜日を表し、範囲は0~6で、0は月曜日、6は日曜日を表します。tm_ydayフィールドは、その時間がその年の何日目かを表し、範囲は1~366で、1はその年の最初の日を表します。tm_isdstは夏時間を表し、-1、0、または1を取ることができます。
これら2種類の表現方法は相互に変換することができます。例えば、秒数で表された時間を時分秒で表された時間に変換するには、gmtime()関数を使用できます。
>>> t = 0 # 時間が0の場合、1970年1月1日0時を表す >>> time.gmtime(t) # 年月日の形式に変換 time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)
時分秒で表された時間を秒数で表された時間に変換するには、mktime()関数を使用できます。
>>> t = 100 # 秒数で表された時間 >>> dmt = time.gmtime(t) # 時分秒の形式に変換 >>> dmt # 表示 time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=1, tm_sec=40, tm_wday=3, tm_yday=1, tm_isdst=0) >>> st = time.mktime(dmt) # 時分秒を秒数に変換 >>> st # ローカル時間であることに注意。我々のタイムゾーンは+8 -28700.0 >>> st+8*60*60 # タイムゾーンを調整して秒数を取得 100.0
インターフェース関数
次に、現在の時間を取得する、異なる形式の時間文字列を取得するなど、いくつかの時間関連のインターフェース関数を紹介します。
1) time():現在の時間を取得する
time()関数は、現在の時間が1970年1月1日0時から経過した時間を秒単位で返します。返り値の型は浮動小数点数です。
import time >>> time.time() # 現在の時間を取得 1555891351.948157
2) sleep(秒数):スリープ
sleep()関数は、現在のプログラムを指定された秒数だけスリープさせます。その引数は浮動小数点数でも構いません。
>>> import time # 時間ライブラリをインポート >>> t1 = time.time() # 現在の時間t1を取得 >>> time.sleep(3) # 3秒間スリープ >>> t2 = time.time() # 新しい現在の時間t2を取得 >>> print(t2-t1) # t2とt1の時間差を表示。おおよそスリープ時間になる 3.00099992752 # 実際に3秒間スリープした >>> t1 = time.time() # 2回目の実験。新しい現在の時間t1を取得 >>> time.sleep(3.2) # 3.2秒間スリープ。実数であることに注意 >>> t2 = time.time() # 新しい現在の時間t2を取得 >>> print(t2-t1) # 両者の時間差が3.2秒かどうかを確認 3.20399999619 # 時間差は3.2秒
3) gmtime():秒数形式を時分秒形式に変換する
gmtime()関数は、time.struct_timeクラスのインスタンスオブジェクトを返します。このオブジェクトには、tm_year、tm_hourなどの属性が含まれ、それぞれ年、時間などの情報を表します。
>>> a = time.time() >>> a 1559053302.312 >>> b = time.gmtime(a) >>> b time.struct_time(tm_year=2019, tm_mon=5, tm_mday=28, tm_hour=14, tm_min=21, tm_sec=42, tm_wday=1, tm_yday=148, tm_isdst=0) >>> type(b) <type 'time.struct_time'> >>> b.tm_year 2019 >>> b.tm_mon 5
4) localtime():現在の時間(時分秒形式)を取得する
localtime()関数は、時分秒で表された現在の時間を取得し、time.struct_timeクラスのインスタンスオブジェクトで表します。このインスタンスオブジェクトには、tm_yearなどの属性が含まれ、年などの情報を表します。
>>> a = time.localtime() >>> type(a) <type 'time.struct_time'> >>> a time.struct_time(tm_year=2019, tm_mon=5, tm_mday=28, tm_hour=22, tm_min=25, tm_sec=28, tm_wday=1, tm_yday=148, tm_isdst=0) >>> a.tm_year 2019 >>> a.tm_mday 28
10
item of content
異なるPythonファイルは異なるモジュールに対応し、同じディレクトリ内の複数のPythonファイルの集合が1つのパッケージとなります。
この章では、読者にPythonのモジュールとパッケージの概念と定義を説明し、合わせてサードパーティのPythonパッケージの様々なインストール方法と使用法を紹介します。
- 441hits
- 0replay
-
0like
- collect
- send report