Python使用pytz實(shí)現(xiàn)時(shí)區(qū)使用與轉(zhuǎn)換的示例詳解
一、Python代碼實(shí)現(xiàn):時(shí)區(qū)轉(zhuǎn)換與時(shí)間比較
import pytz
from datetime import datetime
# 1. 獲取當(dāng)前UTC時(shí)間
utc_now = datetime.now(pytz.utc)
# 2. 轉(zhuǎn)換為目標(biāo)時(shí)區(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. 比較兩個(gè)時(shí)區(qū)的時(shí)間
time_diff = shanghai_time - newyork_time
is_same_day = shanghai_time.date() == newyork_time.date()
print(f"UTC時(shí)間: {utc_now.strftime('%Y-%m-%d %H:%M:%S %Z')}")
print(f"上海時(shí)間: {shanghai_time.strftime('%Y-%m-%d %H:%M:%S %Z')}")
print(f"紐約時(shí)間: {newyork_time.strftime('%Y-%m-%d %H:%M:%S %Z')}")
print(f"時(shí)間差: {abs(time_diff.total_seconds()/3600):.1f}小時(shí)")
print(f"是否同一天: {'是' if is_same_day else '否'}")
輸出示例:
UTC時(shí)間: 2025-06-26 07:30:00 UTC
上海時(shí)間: 2025-06-26 15:30:00 CST
紐約時(shí)間: 2025-06-26 03:30:00 EDT
時(shí)間差: 12.0小時(shí)
是否同一天: 是
二、pytz時(shí)區(qū)參數(shù)表格(常用時(shí)區(qū))
下表列出高頻使用的時(shí)區(qū)(完整列表包含563個(gè)時(shí)區(qū),需通過(guò)pytz.all_timezones獲?。?/p>
| 大洲 | 時(shí)區(qū)標(biāo)識(shí) | 代表城市/地區(qū) | UTC偏移示例 |
|---|---|---|---|
| 亞洲 | Asia/Shanghai | 中國(guó)上海 | UTC+8 |
| Asia/Tokyo | 日本東京 | UTC+9 | |
| Asia/Dubai | 阿聯(lián)酋迪拜 | UTC+4 | |
| 美洲 | America/New_York | 美國(guó)紐約 | UTC-4 (夏令時(shí)) |
| America/Los_Angeles | 美國(guó)洛杉磯 | UTC-7 (夏令時(shí)) | |
| America/Sao_Paulo | 巴西圣保羅 | UTC-3 | |
| 歐洲 | Europe/London | 英國(guó)倫敦 | UTC+1 (夏令時(shí)) |
| Europe/Paris | 法國(guó)巴黎 | UTC+2 (夏令時(shí)) | |
| Europe/Moscow | 俄羅斯莫斯科 | UTC+3 | |
| 大洋洲 | Australia/Sydney | 澳大利亞悉尼 | UTC+10 |
| Pacific/Auckland | 新西蘭奧克蘭 | UTC+12 | |
| 非洲 | Africa/Cairo | 埃及開(kāi)羅 | UTC+2 |
| Africa/Johannesburg | 南非約翰內(nèi)斯堡 | UTC+2 | |
| 極地 | Antarctica/McMurdo | 南極麥克默多站 | UTC+12 |
| 通用 | UTC | 協(xié)調(diào)世界時(shí) | UTC±0 |
三、擴(kuò)展說(shuō)明
獲取全部時(shí)區(qū)列表
import pytz
print("總時(shí)區(qū)數(shù)量:", len(pytz.all_timezones)) # 輸出563
for tz in pytz.common_timezones: # 常用時(shí)區(qū)(約403個(gè))
print(tz)
關(guān)鍵注意事項(xiàng):
- 夏令時(shí)影響:時(shí)區(qū)偏移量會(huì)隨夏令時(shí)變化(如紐約夏季為UTC-4,冬季為UTC-5)
- 時(shí)區(qū)命名規(guī)范:
大洲/城市格式(避免使用EST/CST等縮寫(xiě),因其不唯一) - 數(shù)據(jù)庫(kù)更新:通過(guò)
pip install --upgrade pytz更新時(shí)區(qū)規(guī)則
時(shí)區(qū)比較場(chǎng)景示例
# 檢查兩個(gè)時(shí)區(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)前日期返回布爾值
查看有哪些時(shí)區(qū)
pytz有all_timezones、common_timezones這兩個(gè)屬性來(lái)查看有哪些時(shí)區(qū)。
# -*- coding: utf-8 -*- import pytz print(pytz.all_timezones) print(pytz.common_timezones)
查詢某個(gè)的時(shí)區(qū)
可以根據(jù)國(guó)家代碼查找這個(gè)國(guó)家的所有時(shí)區(qū)。
創(chuàng)建時(shí)區(qū)對(duì)象
根據(jù)上面得到的時(shí)區(qū)信息,就可以創(chuàng)建指定的時(shí)區(qū)對(duì)象。比如創(chuàng)建上海時(shí)區(qū)對(duì)象:
tz = pytz.timezone('Asia/Shanghai')時(shí)間按時(shí)區(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)得到某個(gè)時(shí)區(qū)的時(shí)間
然后在創(chuàng)建時(shí)間對(duì)象時(shí)進(jìn)行指定上面時(shí)區(qū),就可以得到指定時(shí)區(qū)的日期時(shí)間:
>>> 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)時(shí)區(qū)使用與轉(zhuǎn)換的示例詳解的文章就介紹到這了,更多相關(guān)Python pytz時(shí)區(qū)使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解如何在Django項(xiàng)目中使用Jinja2模板引擎
Django是一個(gè)強(qiáng)大的Python Web框架,它提供了一個(gè)內(nèi)置的模板引擎,然而,在某些場(chǎng)景中,開(kāi)發(fā)者可能傾向于使用更快、更靈活的模板引擎,比如Jinja2,在本文中,我們將詳細(xì)探討如何在Django項(xiàng)目中使用Jinja2模板引擎,并提供豐富的示例2023-11-11
pyodps中的apply用法及groupby取分組排序第一條數(shù)據(jù)
這篇文章主要介紹了pyodps中的apply用法及groupby取分組排序第一條數(shù)據(jù),問(wèn)綻放圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值需要的小伙伴可以參考一下2022-05-05
基于python的selenium兩種文件上傳操作實(shí)現(xiàn)詳解
這篇文章主要介紹了基于python的selenium兩種文件上傳操作實(shí)現(xiàn)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
Python將多個(gè)excel表格合并為一個(gè)表格
這篇文章主要為大家詳細(xì)介紹了Python將多個(gè)excel表格合并為一個(gè)表格的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01
Python tkinter模塊彈出窗口及傳值回到主窗口操作詳解
這篇文章主要介紹了Python tkinter模塊彈出窗口及傳值回到主窗口操作,結(jié)合實(shí)例形式分析了Python使用tkinter模塊實(shí)現(xiàn)的彈出窗口及參數(shù)傳遞相關(guān)操作技巧,需要的朋友可以參考下2017-07-07
Python實(shí)現(xiàn)AI自動(dòng)摳圖實(shí)例解析
這篇文章主要介紹了Python實(shí)現(xiàn)AI自動(dòng)摳圖實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
Numpy截取指定范圍內(nèi)的數(shù)據(jù)方法
今天小編就為大家分享一篇Numpy截取指定范圍內(nèi)的數(shù)據(jù)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-11-11

