本文介紹如何在Python 3.6及以上版本中,使用datetime
模塊和zoneinfo
模塊,無需第三方庫pytz
和dateutil
,即可輕鬆實現不同時區日期時間的轉換。
核心方法: 使用datetime
對象的astimezone
方法。
簡要步驟:
datetime
對象。 astimezone
方法將日期時間轉換為目標時區。 前提條件:
檢查並安裝tzdata:
在終端或命令提示符中運行以下命令,檢查系統是否已安裝必要的時區數據:
python3 -c '__import__("zoneinfo").available_timezones()'
如果輸出為空集set()
,則需要安裝tzdata
:
pip install tzdata
詳細步驟及示例:
1. 創建包含時區信息的datetime
對象:
datetime.now()
方法,並指定tz
參數為ZoneInfo("localtime")
獲取本地時間。 from datetime import datetime from zoneinfo import ZoneInfo dt = datetime.now(tz=ZoneInfo("localtime"))
datetime
構造函數,並指定tzinfo
參數。 dt = datetime(2025, 1, 1, 0, 0, tzinfo=ZoneInfo("Europe/Istanbul"))
datetime.fromtimestamp()
方法,並指定tz
參數。 unix_time = 1675000000 # 示例UNIX时间戳 dt = datetime.fromtimestamp(unix_time, tz=ZoneInfo("UTC"))
2. 使用astimezone
方法轉換時區:
使用astimezone()
方法將datetime
對象轉換為目標時區。
pst = dt.astimezone(ZoneInfo("US/Pacific"))
示例: 將土耳其伊斯坦布爾時間2025年1月1日0:00轉換為美國太平洋標準時間(PST)。
from datetime import datetime from zoneinfo import ZoneInfo tr = datetime(2025, 1, 1, 0, 0, tzinfo=ZoneInfo("Europe/Istanbul")) pst = tr.astimezone(ZoneInfo("US/Pacific")) print(f"Istanbul Time: {tr.isoformat()}") print(f"Pacific Standard Time: {pst.isoformat()}")
輸出結果類似:
<code>Istanbul Time: 2025-01-01T00:00:00+03:00 Pacific Standard Time: 2024-12-31T13:00:00-08:00</code>
通過以上步驟,您可以方便地使用Python原生模塊完成不同時區日期時間的轉換,無需依賴額外的第三方庫。 記住根據您的實際需求選擇合適的創建datetime
對象的方法。
以上是[python] 如何在不使用pytz、dateutil的情況下轉換不同時區的日期和時間的詳細內容。更多資訊請關注PHP中文網其他相關文章!