ライブラリ: time

Pythonの time というライブラリについてご紹介します。

import time

time は、時間関連の情報や関数を集めたライブラリです。頻度の高い使いどころとして次のようなものがあるでしょうか。

  • システムの現在時刻を取得する
  • 時刻形式のデータを生成する
  • 時刻のフォーマットを変更する
  • スリープ

以下、 epoch (エポック)ということばが出てきますが、これは「原点となる日時」を表すことばとして使っています。 Unix の世界では epoch は 1970 年の 1 月 1 日 0 時とされていることが多いです。公式ドキュメントでも epoch についての説明されています

以下、順番に見ていきます。

システムの現在時刻を取得する

# epoch からの秒数を返します
print time.time()

epoch からの時間を秒数で得るには time.time() を使います。

# 現在の UTC (元グリニッジ標準時) を
# time.struct_time オブジェクトとして返します
print time.gmtime()

人間にとってわかりやすい年・月・日という形式の時刻情報を取得するには time.gmtime() を使います。これは time.struct_time オブジェクトの形式で現在時刻を返してくれます。

# 現在の年を 4 桁で返します
# 2013
print time.gmtime().tm_year

time.struct_time は年・月・日・時・分・秒などの情報をアトリビュートとして持ったオブジェクトです。他にも、曜日、その年の年始からの経過日数、サマータイムに関するフラグなどの情報も持っています。それぞれアトリビュート名は次のとおりです。

  • tm_year: 年
  • tm_mon: 月
  • tm_mday: 日
  • tm_hour: 時
  • tm_min: 分
  • tm_sec: 秒
  • tm_wday: 曜日を0~6で表した数値
  • tm_yday: 年の頭から数えた経過日数
  • tm_isdst: サマータイムのフラグ

公式ドキュメントの該当箇所 も参照ください。

# 設定されたタイムゾーンにおける現在の時刻を返します
# gmtime()と同じく、time.struct_time形式で返します
print time.localtime()

時刻形式のデータを生成する

print time.struct_time([2013, 1, 1, 1, 10, 15, 1, 1, 0])
# =>
# time.struct_time([tm_year=2013, tm_mon=1, tm_mday=1, tm_hour=1, tm_min=10, tm_sec=15, tm_wday=1, tm_yday=1, tm_isdst=0])

時刻形式形式のデータを生成するには time.struct_time に時刻情報が入ったリストを渡します。時刻情報は、上述の年・月・日などの 9 つの情報となります。

時刻のフォーマットを変更する

t = time.localtime()
print time.mktime(t)
# => epoch からの秒数

struct_time 形式の時刻を「 epoch からの秒数」に変換するには mktime() を使います。 1 秒以下の精度でも時間を計測することができます。

sec = time.time()
print time.gmtime(sec)  # => UTCでの時間
print time.localtime(sec)  # => ローカルのタイムゾーンでの時間

逆に「 epoch からの秒数」を年・月・日・・・形式に変換するには gmtime() localtime() を使います。

t = time.localtime()
print time.strftime("year:%Y week:%W", t)
# year:2013 week:30 などと返されます

struct_time 形式の時間をフォーマット指定で文字列に変換するには strftime() を使います。

tstr = "2013 08 01"
print time. strptime(tstr, "%Y %m %d")
# time.struct_time(tm_year=2013, tm_mon=8, ...

文字列を読み取って struct_time 形式に変換するには strptime() を使います。引数のひとつめに文字列をふたつめにフォーマットを渡します。

strftime()strptime() のフォーマットにおける規則はこちらに一覧が載っています。

スリープ

# 3.5 秒停止
time.sleep(3.5)

Python のプロセスを一定時間停止するには time.sleep() を使います。引数の単位は秒です。

インストール

time は Python 本体に同梱されているため別にインストールする必要はありません。

参考