本文介紹如何在Python 3.6及以上版本中,使用datetime
模塊和zoneinfo
模塊,無需第三方庫pytz
和dateutil
,即可輕鬆實現不同時區日期時間的轉換。
核心方法: 使用datetime
對象的astimezone
方法。
簡要步驟:
datetime
對象。 astimezone
方法將日期時間轉換為目標時區。 前提條件:
檢查並安裝tzdata:
在終端或命令提示符中運行以下命令,檢查系統是否已安裝必要的時區數據:
<code class="language-bash">python3 -c '__import__("zoneinfo").available_timezones()'</code>
如果輸出為空集set()
,則需要安裝tzdata
:
<code class="language-bash">pip install tzdata</code>
詳細步驟及示例:
1. 創建包含時區信息的datetime
對象:
datetime.now()
方法,並指定tz
參數為ZoneInfo("localtime")
獲取本地時間。 <code class="language-python">from datetime import datetime from zoneinfo import ZoneInfo dt = datetime.now(tz=ZoneInfo("localtime"))</code>
datetime
構造函數,並指定tzinfo
參數。 <code class="language-python">dt = datetime(2025, 1, 1, 0, 0, tzinfo=ZoneInfo("Europe/Istanbul"))</code>
datetime.fromtimestamp()
方法,並指定tz
參數。 <code class="language-python">unix_time = 1675000000 # 示例UNIX时间戳 dt = datetime.fromtimestamp(unix_time, tz=ZoneInfo("UTC"))</code>
2. 使用astimezone
方法轉換時區:
使用astimezone()
方法將datetime
對象轉換為目標時區。
<code class="language-python">pst = dt.astimezone(ZoneInfo("US/Pacific"))</code>
示例: 將土耳其伊斯坦布爾時間2025年1月1日0:00轉換為美國太平洋標準時間(PST)。
<code class="language-python">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>
輸出結果類似:
<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中文網其他相關文章!