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 本体に同梱されているため別にインストールする必要はありません。