Pythonの「time」というライブラリについてご紹介します。
import time
「time」は、時間関連の情報や関数を集めたライブラリです。もちろん用途によって変わってはくるかと思うのですが、頻度の高い使いどころとしては次のようなものがあるでしょうか。
- システムの現在時刻を取得する
- 時刻形式のデータを生成する
- 時刻のフォーマットを変更する
- スリープ
以下、順番に見ていきます。
・・・の前にひとつ前置きを。
以下、epoch(エポック)ということばが出てきますが、これは「原点となる時点」を表すことばとして使っています。たとえば、西暦であれば西暦0年1月1日の0時がエポックですし、平成であれば平成元年1月1日の0時がエポックといえます。Unixの世界では、これが1970年の1月1日0時に設定されており、そこからの経過秒数がベースとなっています。公式ドキュメントにも説明が載っています。
それでは以下、順番に。
システムの現在時刻を取得する
print time.time() # epochからの秒数を返します
epochからの時間を秒数で得るにはtime()を使います。
print time.gmtime()
# 現在のUTC(元グリニッジ標準時)を
# time.struct_timeオブジェクトとして返します
人間にとってわかりやすい年・月・日という形式の時刻情報を取得するには、gmtime()を使います。これは、time.struct_timeという形式で現在時刻を返してくれます。
print time.gmtime().tm_year # 2013 現在の年を4桁で返します
struct_timeは年・月・日・時・分・秒などの情報をアトリビュートとして持ったオブジェクトです。年・月・日など以外にも、曜日、その年の頭から数えての経過日数、サマータイムに関するフラグなどの情報も持っています。それぞれ名前は次のとおりとなっています。
- tm_year 年
- tm_mon 月
- tm_mday 日
- tm_hour 時
- tm_min 分
- tm_sec 秒
- tm_wday 曜日を0~6で表した数値
- tm_yday 年の頭から数えた経過日数
- tm_isdst サマータイムのフラグ
公式ドキュメントの該当するパートもよろしければごらんください。
print time.localtime()
# 設定されたタイムゾーンにおける現在の時刻を返します
# gmtime()と同じく、time.struct_time形式で返します
時刻形式のデータを生成する
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()のフォーマットにおける規則はこちらに一覧が載っています。 http://docs.python.org/2/library/time.html#time.strftime
スリープ
time.sleep(3.5) # 3.5秒停止
Pythonプロセスの実行を一定時間停止するには、sleep()を使います。引数の単位は「秒」です。
インストール timeはPython本体をインストールすれば最初から入っているため、別途インストールは必要ありません。