目录
- ⏰ 一、python代码实现:时区转换与时间比较
- 二、pytz时区参数表格(常用时区)
- 三、扩展说明
⏰ 一、Python代码实现:时区转换与时间比较
import pytz
from datetime import datetime
# 1. 获取当前UTC时间
utc_now = datetime.now(pytz.utc)
# 2. 转换为目标时区(示例:上海和纽约)
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. 比较两个时区的时间
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时区参数表格(常用时区)
下表列出高频使用的时区(完整列表包含563个时区,需通过pytz.all_timezones获取):
| 大洲 | 时区标识 | 代表城市/地区 | UTC偏移示例 |
|---|---|---|---|
| 亚洲 | Asia/Shanghai | 中国上海 | UTC+8 |
| Asia/Tokyo | 日本东京 | UTC+9 | |
| Asia/Dubai | 阿联酋迪拜 | UTC+4 | |
| 美洲 | America/New_York | 美国纽约 | UTC-4 (夏令时) |
| America/Los_Angeles | 美国洛杉矶 | UTC-7 (夏令时) | |
| America/Sao_Paulo | 巴西圣保罗 | UTC-3 | |
| 欧洲 | Europe/London | 英国伦敦 | UTC+1 (夏令时) |
| Europe/P编程客栈aris | 法国巴黎 | UTC+2 (夏令时) | |
| Europe/Moscow | 俄罗斯莫斯科 | UTC+3 | |
| 大洋洲 | Australia/Sydney | 澳大利亚悉尼 | UTC+10 |
| Pacific/Auckland | 新西兰奥克兰 | UTC+12 | |
| 非洲 | Africa/Cairo | 埃及开罗 | UTC+2 |
| Africa/Johannesburg | 南非约翰内斯堡 | UTC+2 | |
| 极地 | Antarctica/McMurdo | 南极麦克默多站 | UTC+12 |
| 通用 | UTC | 协调世界时 | UTC±0 |
三、扩展说明
获取全部时区列表:
import pytz
print("总时区数量:", len(pytz.all_timezones)) # 输出563
for tz in pytz.common_timezones:编程客栈 # 常用时区(约403个)
print(tz)
关键注意事项:
- 夏令时影响:时区偏移量会随夏令时变化(如纽约夏季为编程UTC-4,冬季为UTC-5)
- 时区命名规范:
大洲/城市格式(避免使用EST/CST等缩写,因其不唯一) - 数据库更新:通过
pip install --upgrade pytz更新时区规则
时区比较场景示例:
# 检查两个时区是否均为星期一
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.wee编程kday() == 0 and tz2_time.weekday() == 0 # 0=周一
pri编程nt(is_both_monday("Asia/Shanghai", "Europe/London")) # 根据当前日期返回布尔值
到此这篇关于Python中pytz时区使用设置实现的文章就介绍到这了,更多相关Python pytz时区使用内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!
加载中,请稍侯......
精彩评论