Python使用pytz實(shí)現(xiàn)時區(qū)使用與轉(zhuǎn)換的示例詳解
一、Python代碼實(shí)現(xiàn):時區(qū)轉(zhuǎn)換與時間比較
import pytz
from datetime import datetime
# 1. 獲取當(dāng)前UTC時間
utc_now = datetime.now(pytz.utc)
# 2. 轉(zhuǎn)換為目標(biāo)時區(qū)(示例:上海和紐約)
shanghai_tz = pytz.timezone('Asia/Shanghai')
newyork_tz = pytz.timezone('America/New_York')
shanghai_time = utc_now.astimezone(shanghai_tz)
newyork_time = utc_now.astimezone(newyork_tz)
# 3. 比較兩個時區(qū)的時間
time_diff = shanghai_time - newyork_time
is_same_day = shanghai_time.date() == newyork_time.date()
print(f"UTC時間: {utc_now.strftime('%Y-%m-%d %H:%M:%S %Z')}")
print(f"上海時間: {shanghai_time.strftime('%Y-%m-%d %H:%M:%S %Z')}")
print(f"紐約時間: {newyork_time.strftime('%Y-%m-%d %H:%M:%S %Z')}")
print(f"時間差: {abs(time_diff.total_seconds()/3600):.1f}小時")
print(f"是否同一天: {'是' if is_same_day else '否'}")
輸出示例:
UTC時間: 2025-06-26 07:30:00 UTC
上海時間: 2025-06-26 15:30:00 CST
紐約時間: 2025-06-26 03:30:00 EDT
時間差: 12.0小時
是否同一天: 是
二、pytz時區(qū)參數(shù)表格(常用時區(qū))
下表列出高頻使用的時區(qū)(完整列表包含563個時區(qū),需通過pytz.all_timezones獲?。?/p>
| 大洲 | 時區(qū)標(biāo)識 | 代表城市/地區(qū) | UTC偏移示例 |
|---|---|---|---|
| 亞洲 | Asia/Shanghai | 中國上海 | UTC+8 |
| Asia/Tokyo | 日本東京 | UTC+9 | |
| Asia/Dubai | 阿聯(lián)酋迪拜 | UTC+4 | |
| 美洲 | America/New_York | 美國紐約 | UTC-4 (夏令時) |
| America/Los_Angeles | 美國洛杉磯 | UTC-7 (夏令時) | |
| America/Sao_Paulo | 巴西圣保羅 | UTC-3 | |
| 歐洲 | Europe/London | 英國倫敦 | UTC+1 (夏令時) |
| Europe/Paris | 法國巴黎 | UTC+2 (夏令時) | |
| Europe/Moscow | 俄羅斯莫斯科 | UTC+3 | |
| 大洋洲 | Australia/Sydney | 澳大利亞悉尼 | UTC+10 |
| Pacific/Auckland | 新西蘭奧克蘭 | UTC+12 | |
| 非洲 | Africa/Cairo | 埃及開羅 | UTC+2 |
| Africa/Johannesburg | 南非約翰內(nèi)斯堡 | UTC+2 | |
| 極地 | Antarctica/McMurdo | 南極麥克默多站 | UTC+12 |
| 通用 | UTC | 協(xié)調(diào)世界時 | UTC±0 |
三、擴(kuò)展說明
獲取全部時區(qū)列表
import pytz
print("總時區(qū)數(shù)量:", len(pytz.all_timezones)) # 輸出563
for tz in pytz.common_timezones: # 常用時區(qū)(約403個)
print(tz)
關(guān)鍵注意事項:
- 夏令時影響:時區(qū)偏移量會隨夏令時變化(如紐約夏季為UTC-4,冬季為UTC-5)
- 時區(qū)命名規(guī)范:
大洲/城市格式(避免使用EST/CST等縮寫,因其不唯一) - 數(shù)據(jù)庫更新:通過
pip install --upgrade pytz更新時區(qū)規(guī)則
時區(qū)比較場景示例
# 檢查兩個時區(qū)是否均為星期一
def is_both_monday(tz1: str, tz2: str) -> bool:
tz1_time = datetime.now(pytz.timezone(tz1))
tz2_time = datetime.now(pytz.timezone(tz2))
return tz1_time.weekday() == 0 and tz2_time.weekday() == 0 # 0=周一
print(is_both_monday("Asia/Shanghai", "Europe/London")) # 根據(jù)當(dāng)前日期返回布爾值
查看有哪些時區(qū)
pytz有all_timezones、common_timezones這兩個屬性來查看有哪些時區(qū)。
# -*- coding: utf-8 -*- import pytz print(pytz.all_timezones) print(pytz.common_timezones)
查詢某個的時區(qū)
可以根據(jù)國家代碼查找這個國家的所有時區(qū)。
創(chuàng)建時區(qū)對象
根據(jù)上面得到的時區(qū)信息,就可以創(chuàng)建指定的時區(qū)對象。比如創(chuàng)建上海時區(qū)對象:
tz = pytz.timezone('Asia/Shanghai')時間按時區(qū)轉(zhuǎn)換
# -*- coding: utf-8 -*-
import pytz
import datetime
utc = pytz.timezone('UTC')
now_time = datetime.datetime.now(tz=utc)
print(now_time)
shanghai = pytz.timezone('Asia/Shanghai')
shanghai_time = datetime.datetime.now(tz=shanghai)
print(shanghai_time)得到某個時區(qū)的時間
然后在創(chuàng)建時間對象時進(jìn)行指定上面時區(qū),就可以得到指定時區(qū)的日期時間:
>>> import datetime >>> datetime.datetime.now(tz) datetime.datetime(2009, 2, 21, 15, 12, 33, 906000, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>)
到此這篇關(guān)于Python使用pytz實(shí)現(xiàn)時區(qū)使用與轉(zhuǎn)換的示例詳解的文章就介紹到這了,更多相關(guān)Python pytz時區(qū)使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
ChatGPT 幫我自動編寫 Python 爬蟲腳本的詳細(xì)過程
ChatGPT是一種基于大語言模型的生成式AI,換句話說它可以自動生成類似人類語言的文本,把梳理好的有邏輯的答案呈現(xiàn)在你面前,這完全不同于傳統(tǒng)搜索工具,這篇文章主要介紹了ChatGPT 幫我自動編寫 Python 爬蟲腳本,需要的朋友可以參考下2023-02-02
Python使用Matplotlib實(shí)現(xiàn)Logos設(shè)計代碼
這篇文章主要介紹了Python使用Matplotlib實(shí)現(xiàn)Logos設(shè)計代碼,具有一定借鑒價值,需要的朋友可以參考下。2017-12-12
一篇文章帶你學(xué)習(xí)python的函數(shù)與類
這篇文章主要為大家介紹了python的函數(shù)與類,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-01-01
Scrapy之爬取結(jié)果導(dǎo)出為Excel的實(shí)現(xiàn)過程
這篇文章主要介紹了Scrapy之爬取結(jié)果導(dǎo)出為Excel的實(shí)現(xiàn)過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12
Flask框架學(xué)習(xí)筆記之路由和反向路由詳解【圖文與實(shí)例】
這篇文章主要介紹了Flask框架學(xué)習(xí)筆記之路由和反向路由,結(jié)合圖文與實(shí)例形式詳細(xì)分析了flask框架中路由與反向路由相關(guān)概念、原理、用法與相關(guān)操作注意事項,需要的朋友可以參考下2019-08-08
python讀取并繪制nc數(shù)據(jù)的保姆級教程
其實(shí)目前很多數(shù)據(jù)以nc格式存儲,這篇文章主要給大家介紹了關(guān)于python讀取并繪制nc數(shù)據(jù)的保姆級教程,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05

