web-dev-qa-db-ja.com

gmtime()のtime + date出力からEpochからの経過秒数を取得するにはどうすればいいですか?

gmtime()をどのように逆にしますか?ここであなたは時間+日付を入れて秒数を取得しますか?

私は'Jul 9, 2009 @ 20:02:58 UTC'のような文字列を持っています、そして私はエポックから2009年7月9日までの秒数を取り戻したいです。

私はtime.strftimeを試しましたが、それを正しく使う方法がわからない、あるいはそれが正しいコマンドであるかどうかわかりません。

143
calccrypto

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

カレンダーモジュールの詳細 ここ

112
nmichaels

time モジュールを使ってください。

Epoch_time = int(time.time())
537
naren

time.gmtimeはタイムスタンプ01970-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
10
unutbu
t = datetime.strptime('Jul 9, 2009 @ 20:02:58 UTC',"%b %d, %Y @ %H:%M:%S %Z")
4
Falmarri
ep = datetime.datetime(1970,1,1,0,0,0)
x = (datetime.datetime.utcnow()- ep).total_seconds()

これはint(time.time())とは異なるはずですが、x % (60*60*24)のようなものを使うのは安全です。

datetime - 基本的な日付と時刻の種類:

Timeモジュールとは異なり、datetimeモジュールはうるう秒をサポートしません。

4
user3226167

元のタイムスタンプに応じて、2つの方法があります。

mktime()timegm()

http://docs.python.org/library/time.html

3
Evan Mulawski