python處理時間字符串
時間格式 ISO 8601 標準
"2024-09-11T00:00:03Z"
Z 的時間字符串表示UTC 時間(協調世界時)。Z(Zero offset / UTC)
如果沒有 Z,通常還可以使用時區偏移來表示時間。例如:
2024-09-11T00:00:03+08:00 表示東八區的時間(比 UTC 提前8小時)。
2024-09-11T00:00:03-05:00 表示比 UTC 晚5小時的時間。
字符串獲取UTC時間戳
calendar 模塊中的 timegm 函數處理 UTC 時間
from datetime import datetime
import calendar
# 定義時間字符串
time_str = "2024-09-11T00:00:03Z"
# 解析時間字符串為UTC時間
dt = datetime.strptime(time_str, "%Y-%m-%dT%H:%M:%SZ")
# 使用 calendar.timegm 來轉換為 Unix 時間戳
unix_time = calendar.timegm(dt.timetuple())
print(unix_time)
注意區分 mktime 默認處理的是本地時間,不是 UTC 時間。也就是說,它會將給定的時間假設為當前時區的本地時間,然后將其轉換為 Unix 時間戳。這個特性導致在處理 UTC 時間(如帶有 Z 的時間字符串)時,計算結果可能不正確,因為時區不同:
以下得到的是錯誤的
import time
from datetime import datetime
# 定義時間字符串
time_str = "2024-09-11T00:00:03"
# 解析時間字符串為 datetime 對象
dt = datetime.strptime(time_str, "%Y-%m-%dT%H:%M:%S")
# 使用 mktime 轉換為 Unix 時間戳(假設為本地時間)
unix_time = time.mktime(dt.timetuple())
print(unix_time)

浙公網安備 33010602011771號