Python pytz 时区使用举例

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/Paris法国巴黎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

🔍 三、扩展说明

  1. 获取全部时区列表

    import pytz
    print("总时区数量:", len(pytz.all_timezones))  # 输出563
    for tz in pytz.common_timezones:  # 常用时区(约403个)
        print(tz)
    
  2. 关键注意事项

    • 夏令时影响:时区偏移量会随夏令时变化(如纽约夏季为UTC-4,冬季为UTC-5)
    • 时区命名规范:大洲/城市格式(避免使用EST/CST等缩写,因其不唯一)
    • 数据库更新:通过pip install --upgrade pytz更新时区规则
  3. 时区比较场景示例

    # 检查两个时区是否均为星期一
    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"))  # 根据当前日期返回布尔值
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Humbunklung

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值