ホームページ > バックエンド開発 > Python チュートリアル > Python で `strftime(\'%s\')` が不正確なエポック時間を生成するのはなぜですか?

Python で `strftime(\'%s\')` が不正確なエポック時間を生成するのはなぜですか?

Mary-Kate Olsen
リリース: 2024-11-20 04:01:02
オリジナル
285 人が閲覧しました

Why Does `strftime('%s')` Produce Inaccurate Epoch Time in Python?

'strftime' を使用した Python Datetime からエポックへの変換: タイムゾーンの不一致を理解する

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
ログイン後にコピー

エポックに 'strftime('%s')' を使用しない理由変換

Python は本質的にこの形式をサポートしていないため、エポック変換に 'strftime('%s')' を使用しないことが重要です。その機能は、システムの 'strftime' 実装に入力を渡すことに依存しており、これによりローカル タイムゾーンが使用され、エラーが発生する可能性があります。

結論として、Python 3.3 の 'timestamp()' メソッドを使用することをお勧めします。以前のバージョンでは、UTC で正確なエポックタイム変換を取得するために手動で計算されていました。この慣行に従うことで、システムのタイムゾーン構成に関係なく、一貫性と信頼性の高い結果を保証できます。

以上がPython で `strftime('%s')` が不正確なエポック時間を生成するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート