最も基本的な現在時刻を取得する関数の使用例を示します。
>>> import time # エポックタイムを取得 >>> time.time() 1449268841.95064 # struct_time(UTC)を取得 >>> time.gmtime() time.struct_time(tm_year=2015, tm_mon=12, tm_mday=4, tm_hour=22, tm_min=40, tm_sec=48, tm_wday=4, tm_yday=338, tm_isdst=0)
time.gmtime() は、エボックタイムを引数として受けることも出来ます。この場合、現在時刻ではなく引数のエポックタイムを struct_time(UTC) に変換します。
# エポックタイム → struct_time(UTC) >>> time.gmtime(1449200000) time.struct_time(tm_year=2015, tm_mon=12, tm_mday=4, tm_hour=3, tm_min=33, tm_sec=20, tm_wday=4, tm_yday=338, tm_isdst=0)
それではこの逆、即ち struct_time(UTC) をエポックタイムに変換する関数はあるのでしょうか?
あるにはあるのですが、何故か timeモジュールではなく calendarモジュールに含まれています。calendar.timegm() がその関数です。
>>> given_utc = time.gmtime(1449200000) # struct_time(UTC) → エポックタイム >>> import calendar >>> epoch = calendar.timegm(given_utc) >>> time.gmtime(epoch + 24 * 60 * 60) time.struct_time(tm_year=2015, tm_mon=12, tm_mday=5, tm_hour=3, tm_min=33, tm_sec=20, tm_wday=5, tm_yday=339, tm_isdst=0)
「struct_time(local time) → エポックタイム」の変換は timeモジュールの time.mktime() でできるというのに、何だかアンバランスですね。
0 件のコメント:
コメントを投稿