192


37

Pythonでは、エポックからの秒数を「datetime」オブジェクトにどのように変換しますか?

`time`モジュールはエポックからの秒数を使用して初期化できます:

>>> import time
>>> t1=time.gmtime(1284286794)
>>> t1
time.struct_time(tm_year=2010, tm_mon=9, tm_mday=12, tm_hour=10, tm_min=19,
                 tm_sec=54, tm_wday=6, tm_yday=255, tm_isdst=0)

同じ方法で `datetime.datetime`オブジェクトを初期化するエレガントな方法はありますか?

4 Answer


324


http://docs.python.org/library/datetime.html#datetime.datetime.fromtimestamp [datetime.datetime.fromtimestamp]は、タイムゾーンを知っていれば、` timeと同じ出力を生成できます.gmtime`

>>> datetime.datetime.fromtimestamp(1284286794)
datetime.datetime(2010, 9, 12, 11, 19, 54)

or

>>> datetime.datetime.utcfromtimestamp(1284286794)
datetime.datetime(2010, 9, 12, 10, 19, 54)


27


エポックからhttp://docs.python.org/2/library/datetime.html#datetime.datetime [datetime]への秒数からhttp://docs.python.org/2/library/datetime.html#datetimeへ.datetime.strftime [strftime]:

>>> ts_epoch = 1362301382
>>> ts = datetime.datetime.fromtimestamp(ts_epoch).strftime('%Y-%m-%d %H:%M:%S')
>>> ts
'2013-03-03 01:03:02'


12


ドキュメントから、エポック以降の秒からタイムゾーン対応の日時オブジェクトを取得する推奨方法は次のとおりです。

from datetime import datetime, timezone
datetime.fromtimestamp(timestamp, timezone.utc)

Python 2、http://pytz.sourceforge.net/ [pytz]を使用:

from datetime import datetime
import pytz
datetime.fromtimestamp(timestamp, pytz.utc)


7


datetime.datetime.http://docs.python.org/2/library/datetime.html#datetime.datetime.fromtimestamp [fromtimestamp](timestamp)および .http://docs.python.org/2/library/datetime.html#datetime.datetime.utcfromtimestamp[utcfromtimestamp](timestamp) 1月より前の日付のウィンドウでは失敗します。 1970年1月、UNIXの負のタイムスタンプはUNIXベースのプラットフォームで機能するようです。 ドキュメントはこれを言う:

_ "http://docs.python.org/2/library/datetime.html#datetime.datetime.fromtimestamp [タイムスタンプがプラットフォームCのgmtime()関数でサポートされている値の範囲外の場合、ValueErrorが発生する可能性があります。 これは1970年から2038年までに制限されるのが一般的です。」」 _

Issue1646728も参照してください