日付、時刻を処理するtimeモジュールを利用するには、抑えておくべきものが二つある。
- 1970年1月1日0時0分0秒からの経過秒数を表すエポック秒
- timeモジュールでの時刻の表現といえる time.struct_timeシーケンス
timeモジュールの関数ではこの二つをよく使う。
gmtime
エポック秒からUTCにおけるtime.struct_timeシーケンスを得る。
>>> time.gmtime(1000000000) time.struct_time(tm_year=2001, tm_mon=9, tm_mday=9, tm_hour=1, tm_min=46, tm_sec =40, tm_wday=6, tm_yday=252, tm_isdst=0)
localtime
エポック秒からローカルな時刻のtime.struct_timeシーケンスを得る。
>>> time.localtime(1000000000) time.struct_time(tm_year=2001, tm_mon=9, tm_mday=9, tm_hour=10, tm_min=46, tm_se c=40, tm_wday=6, tm_yday=252, tm_isdst=0)
ctime
エポック秒から日付・時刻を表す文字列を得る。
>>> time.ctime(1000000000) 'Sun Sep 09 10:46:40 2001'
ちなみに、gmtime、localtime、ctimeともエポック秒を省略すると現在の時刻が使われる。
asctime
ctimeと違って、time.struct_timeシーケンスから文字列を得る。
>>> time.asctime(time.localtime()) 'Sat Feb 16 20:30:02 2013'
time
UTCにおける現在のエポック秒を得る。返り値は浮動小数点数。
>>> time.time() 1361015278.904
mktime
localtimeの逆を行う関数。ローカル時刻のtime.struct_timeシーケンスからエポック秒を得る。
>>> t = time.localtime() >>> time.mktime(t) 1361014493.0
strftime
time.struct_timeシーケンスから、指定したフォーマットの文字列を得る。
>>> t = time.localtime() >>> time.strftime("%Y-%m-%d %H:%M:%S", t) '2013-02-16 20:37:57'
strptime
strftimeの逆。フォーマットされた日付・時刻からtime.struct_timeシーケンスを得る。
>>> s = "2013-02-16 20:40:00" >>> t = time.strptime(s, "%Y-%m-%d %H:%M:%S") >>> t time.struct_time(tm_year=2013, tm_mon=2, tm_mday=16, tm_hour=20, tm_min=40, tm_s ec=0, tm_wday=5, tm_yday=47, tm_isdst=-1)
主な関数はこんなところ。マニュアルにはほかにもいくつもの関数が書かれている。