回答:
これがUnixタイムスタンプを取得する方法であると検索エンジンから通知されたためにここに来た場合は、この回答の読み上げを中止してください。下にスクロールします。
あなたが逆転したい場合はtime.gmtime()
、あなたがしたいですcalendar.timegm()
。
>>> calendar.timegm(time.gmtime())
1293581619.0
を使用して文字列を時間タプルに変換できますtime.strptime()
。これにより、渡せる時間タプルが返されますcalendar.timegm()
。
>>> import calendar
>>> import time
>>> calendar.timegm(time.strptime('Jul 9, 2009 @ 20:02:58 UTC', '%b %d, %Y @ %H:%M:%S UTC'))
1247169778
カレンダーモジュールの詳細はこちら
時間モジュールを使用します。
epoch_time = int(time.time())
time
Unixエポック(1970)を使用すると、UTCに簡単に変換できます。
time.gmtime
はタイムスタンプ0
をにマップすることに注意してください1970-1-1 00:00:00
。
In [61]: import time
In [63]: time.gmtime(0)
Out[63]: time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)
time.mktime(time.gmtime(0))
ロケールに応じた量だけシフトされたタイムスタンプを提供します。これは通常、0ではない場合があります。
In [64]: time.mktime(time.gmtime(0))
Out[64]: 18000.0
の逆time.gmtime
はcalendar.timegm
:
In [62]: import calendar
In [65]: calendar.timegm(time.gmtime(0))
Out[65]: 0
mktime()
しないでくださいgmtime()
。ローカル時間をmktime()
受け入れますが、UTC時間を返します-ローカルタイムゾーンは異なる場合があり、異なる可能性があります。「あなたのロケールに相対的なタイムスタンプ」は意味がありません:POSIXタイムスタンプはあなたのロケール(ローカルタイムゾーン)に依存しません-それは世界中で同じ値です。「エポックからの秒数」は、ほとんどの場合(Windowsでも)POSIXタイムスタンプです。TAIタイムスケールを使用する「正しい」タイムゾーンなどは一般的ではありません。Pythonのtime.time()はローカルまたはUTCタイムスタンプを返しますか?を参照してください。gmtime()
mktime()
最近私はいくつかの問題を抱えています。一部のpython Webサーバー(たとえば、トルネード)では、プロセスが実行され続けるため、システムロケールを変更してもmktime()
、WebサーバーAPIによって呼び出されたまま、古いタイムゾーンを使用して時間オブジェクトを生成します。切り替えてgmtime()
手動でgmtオフセットを適用する必要があります。
ep = datetime.datetime(1970,1,1,0,0,0)
x = (datetime.datetime.utcnow()- ep).total_seconds()
これはとは異なるはずですがint(time.time())
、次のようなものを使用しても安全ですx % (60*60*24)
timeモジュールとは異なり、datetimeモジュールはうるう秒をサポートしていません。
t = datetime.strptime('Jul 9, 2009 @ 20:02:58 UTC',"%b %d, %Y @ %H:%M:%S %Z")
from datetime import datetime
かを実行する必要がありますdatetime.datetime.strptime