Select Language

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


post
  • 10

    item of content
Pythonにおいて、ディレクトリとファイルは非常に重要で、異なるファイルでは同じ関数や変数を定義しても衝突が起こりません。これはJavaに似ており、CやC++とは明らかに異なります。Pythonはソースコードのレベルでネームスペースを定義していないため、ファイルとパスがimport文と共にネームスペースの役割を果たします。
異なるPythonファイルは異なるモジュールに対応し、同じディレクトリ内の複数のPythonファイルの集合が1つのパッケージとなります。
この章では、読者にPythonのモジュールとパッケージの概念と定義を説明し、合わせてサードパーティのPythonパッケージの様々なインストール方法と使用法を紹介します。