ホームページ > バックエンド開発 > Python チュートリアル > Python の「datetime.date」オブジェクトと「datetime.datetime」オブジェクトを UTC タイムスタンプに正確に変換するにはどうすればよいですか?

Python の「datetime.date」オブジェクトと「datetime.datetime」オブジェクトを UTC タイムスタンプに正確に変換するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-19 22:53:10
オリジナル
523 人が閲覧しました

How to Accurately Convert Python `datetime.date` and `datetime.datetime` Objects to UTC Timestamps?

Python で datetime.date を UTC タイムスタンプに変換する

Python で日付を扱う場合、日付を UTC タイムスタンプに変換する必要があります。さまざまなアプリケーション。ただし、datetime.datetime.utcfromtimestamp(time.mktime(d)) のような従来のメソッドを使用すると、誤った結果が生じる可能性があります。

UTC 日付をエポックからの秒数に変換する

UTC で表される日付 d について、それをエポックからの秒数に変換するための正しい式

timestamp1 = calendar.timegm(d.timetuple())
ログイン後にコピー

このメソッドは、結果のタイムスタンプが UTC の日付を表すことを保証します。

現地時間の日付をエポックからの秒数に変換する

日付 d がローカル タイムゾーンにある場合、mktime() を使用すると誤った結果が生じる可能性があります。これを解決するには、次のコマンドを使用できます。

timestamp2 = time.mktime(d.timetuple())
ログイン後にコピー

ただし、現地の午前 0 時が UTC の午前 0 時と異なる場合、timestamp1 と timestamp2 が異なる可能性があることに注意してください。

UTC での datetime.date の変換Calendar.timegm() なし

datetime.date オブジェクトを直接に変換するにはUTC タイムスタンプの場合は、次の式を使用できます。

timestamp = (utc_date.toordinal() - date(1970, 1, 1).toordinal()) * DAY
timestamp = (utc_date - date(1970, 1, 1)).days * DAY
ログイン後にコピー

UTC の datetime.datetime を POSIX タイムスタンプに変換する

すでに UTC にある datetime.datetime オブジェクトの場合では、次のメソッドが利用可能です:

  • Python 3.3 が提供するものdatetime.timestamp():
timestamp = dt.replace(tzinfo=timezone.utc).timestamp()
ログイン後にコピー
  • Python 3 (
timestamp = (dt - datetime(1970, 1, 1)) / timedelta(seconds=1)
ログイン後にコピー
  • Python 2:
timestamp = (dt - datetime(1970, 1, 1)).total_seconds()
ログイン後にコピー

認識された日時オブジェクトを POSIX タイムスタンプに変換する

認識された日時オブジェクト (タイムゾーン情報を含む日時) の場合、次のアプローチは次のとおりです。推奨:

timestamp = dt.timestamp() # Python 3.3+
timestamp = (dt - epoch) / timedelta(seconds=1) # Python 3
timestamp = (dt - epoch) // timedelta(seconds=1) # Python 3 integer timestamp
ログイン後にコピー

以上がPython の「datetime.date」オブジェクトと「datetime.datetime」オブジェクトを UTC タイムスタンプに正確に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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