首頁 > 後端開發 > Python教學 > 如何正確地將Python日期物件轉換為UTC時間戳記?

如何正確地將Python日期物件轉換為UTC時間戳記?

Susan Sarandon
發布: 2024-12-15 08:50:10
原創
775 人瀏覽過

How to Correctly Convert Python Date Objects to UTC Timestamps?

在Python 中將日期物件轉換為UTC 時間戳

在許多情況下,在Python 中處理日期和時間需要將它們轉換為UTC時間戳與在通用協調時間上運行的其他系統或框架無縫整合。然而,這個轉換過程可能會遇到障礙。例如,下面的程式碼片段會產生意外結果:

import datetime

d = datetime.date(2011, 01, 01)  # A date object
timestamp = datetime.datetime.utcfromtimestamp(time.mktime(d.timetuple()))

print(timestamp)  # Output: datetime.datetime(2010, 12, 31, 23, 0)
登入後複製

預期結果是 2011 年 1 月 1 日的 UTC 時間戳,但我們得到的是 2010 年 12 月 31 日 23:00 UTC。

讓我們探討這個問題的解決方案,並了解如何取得日期物件的正確UTC 時間戳Python.

處理UTC 格式的日期物件

提供的日期對象d 是原生Python 日期對象,表示沒有任何時間資訊的日期。要取得正確的 UTC 時間戳,我們需要確保在 UTC 上下文中明確考慮日期物件。

這裡有兩種方法可以實現此目的:

選項1:使用calendar.timegm()

此方法假設日期物件d 採用日期物件d 採用UTC時區。

import calendar

timestamp = calendar.timegm(d.timetuple())

print(timestamp)  # Output: 1293840000
登入後複製

輸出是 2011 年 1 月 1 日 00:00 的正確 UTC 時間戳記。

選項2:使用datetime.timestamp()

此選項在Python 3.3 及更高版本中可用,需要我們明確指定獲取時間戳之前的UTC時區。

from datetime import timezone

d_utc = d.replace(tzinfo=timezone.utc)  # Explicitly specify UTC timezone
timestamp = d_utc.timestamp()

print(timestamp)
登入後複製

輸出與先前的方法一致。

將日期時間對象轉換為UTC時間戳

如果您有日期時間對象而不是日期對象,則轉換過程略有不同。您可以使用以下方法:

Python 3.3

timestamp = dt.replace(tzinfo=timezone.utc).timestamp()
登入後複製

Python 3 (

timestamp = (dt - datetime(1970, 1, 1, tzinfo=timezone.utc)) / timedelta(seconds=1)
登入後複製

Python 2

timestamp = (dt - datetime(1970, 1, 1)).total_seconds()
登入後複製

請小心潛在的浮點問題並確保時間戳的準確性。

以上是如何正確地將Python日期物件轉換為UTC時間戳記?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板