使用pytz处理Python时区 | AI生成和翻译

Home 2025.09

安装 pytz

pytz 是用于处理时区感知日期时间对象的第三方 Python 库。请注意,从 Python 3.9+ 开始,建议新代码使用内置的 zoneinfo 模块(它属于标准库且能自动处理更新),但 pytz 仍被广泛使用。

使用 pip 安装 pytz:

pip install pytz

pytz 基础用法

pytz 需与 Python 的 datetime 模块配合使用。核心概念:

导入所需模块:

import datetime
import pytz

应用示例

1. 获取指定时区的当前时间

使用 pytz.utc 或特定时区。最佳实践是在内部始终使用 UTC 时间。

# 获取当前 UTC 时间
utc_now = datetime.datetime.now(pytz.utc)
print(utc_now)  # 示例:2023-10-15 14:30:00+00:00

# 获取美国东部当前时间
eastern = pytz.timezone('US/Eastern')
eastern_now = datetime.datetime.now(eastern)
print(eastern_now)  # 示例:2023-10-15 10:30:00-04:00(已调整夏令时)

2. 本地化原生日期时间

将原生(时区未感知)日期时间转换为时区感知对象。

# 创建原生日期时间(例如 2023年10月15日12:00)
naive_dt = datetime.datetime(2023, 10, 15, 12, 0)
print(naive_dt)  # 2023-10-15 12:00:00

# 本地化为美国东部时间
eastern = pytz.timezone('US/Eastern')
aware_dt = eastern.localize(naive_dt)
print(aware_dt)  # 2023-10-15 12:00:00-04:00

3. 时区转换

先本地化日期时间,再进行时区转换。

# 从 UTC 时间开始
utc_dt = pytz.utc.localize(datetime.datetime(2023, 10, 15, 14, 0))
print(utc_dt)  # 2023-10-15 14:00:00+00:00

# 转换为太平洋时间
pacific = pytz.timezone('US/Pacific')
pacific_dt = utc_dt.astimezone(pacific)
print(pacific_dt)  # 2023-10-15 07:00:00-07:00

4. 处理时区列表

pytz 支持 Olson 数据库中的常用时区名称。

# 列出可用时区
print(pytz.all_timezones[:10])  # 示例:['Africa/Abidjan', 'Africa/Accra', ...]

# 或按国家筛选
print(pytz.country_timezones['US'])  # ['America/New_York', 'America/Los_Angeles', ...]

迁移至 zoneinfo(推荐 Python 3.9+ 使用)

新版 Python 建议使用内置 zoneinfo 替代 pytz 以简化操作:

from zoneinfo import ZoneInfo
import datetime

# 等效于 pytz 示例
eastern_now = datetime.datetime.now(ZoneInfo('US/Eastern'))
aware_dt = datetime.datetime(2023, 10, 15, 12, 0).replace(tzinfo=ZoneInfo('US/Eastern'))

常见问题与技巧


Back

x-ai/grok-code-fast-1

Donate