Python では、'strftime' メソッドは通常、datetime オブジェクトを datetime オブジェクトに変換するために使用されます。特定の日付と時刻の形式を表す文字列。ただし、「%s」を使用してエポック時間に変換する場合は、タイムゾーンの不一致の可能性を認識することが重要です。
ご覧のとおり、日時オブジェクトで 'strftime('%s')' を使用すると、次のような結果になります。 UTC での実際のエポック時間とは 1 時間異なる値。これは、'strftime' がデフォルトでシステムのローカル タイムゾーンを使用するため、UTC からのオフセットが生じる可能性があります。
このタイム ゾーンの問題を解決するには、' timestamp()' メソッド。Python 3.3 で導入されました。 「timestamp()」は、システムのタイムゾーンに関係なく、エポック時間を秒単位で直接返します。
>>> datetime.datetime(2012, 4, 1, 0, 0).timestamp() 1333234800.0
Python バージョン 3.3 より前の場合は、エポック時間を手動で計算できます。
>>> (datetime.datetime(2012, 4, 1, 0, 0) - datetime.datetime(1970, 1, 1)).total_seconds() 1333238400.0
Python は本質的にこの形式をサポートしていないため、エポック変換に 'strftime('%s')' を使用しないことが重要です。その機能は、システムの 'strftime' 実装に入力を渡すことに依存しており、これによりローカル タイムゾーンが使用され、エラーが発生する可能性があります。
結論として、Python 3.3 の 'timestamp()' メソッドを使用することをお勧めします。以前のバージョンでは、UTC で正確なエポックタイム変換を取得するために手動で計算されていました。この慣行に従うことで、システムのタイムゾーン構成に関係なく、一貫性と信頼性の高い結果を保証できます。
以上がPython で `strftime('%s')` が不正確なエポック時間を生成するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。