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 オブジェクトの場合では、次のメソッドが利用可能です:
timestamp = dt.replace(tzinfo=timezone.utc).timestamp()
timestamp = (dt - datetime(1970, 1, 1)) / timedelta(seconds=1)
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 サイトの他の関連記事を参照してください。