2013/07/18

ライブラリ:time

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本体をインストールすれば最初から入っているため、別途インストールは必要ありません。


参考
time - Python公式ドキュメント

0 件のコメント: