You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将datetime.date类型转换为PST时区?

解决UTC日期转PST时区日期的问题

你当前的代码Date = dt.datetime.today().date()得到的是不带时区信息的日期对象,若运行环境为UTC时区,这个日期会是UTC标准下的日期。要转换为PST(美国太平洋时区)的日期,核心是先保留时区信息,再完成时区转换,最后提取日期。

方法1:Python 3.9+ 用内置zoneinfo(推荐)

import datetime as dt
from zoneinfo import ZoneInfo

# 获取带UTC时区的当前时间
utc_now = dt.datetime.now(tz=ZoneInfo("UTC"))
# 转换为美国太平洋时区(自动处理夏令时切换)
pst_now = utc_now.astimezone(ZoneInfo("America/Los_Angeles"))
# 提取PST时区的日期
pst_date = pst_now.date()

当UTC时间为2022-09-19 00:00(对应PST 2022-09-18 17:00)时,pst_date会输出2022-09-18。

方法2:旧版本Python 用pytz库

若你的Python版本低于3.9,先安装pytz:pip install pytz,再用以下代码:

import datetime as dt
import pytz

# 获取带UTC时区的当前时间
utc_now = dt.datetime.now(tz=pytz.utc)
# 转换为美国太平洋时区
pst_tz = pytz.timezone("America/Los_Angeles")
pst_now = utc_now.astimezone(pst_tz)
# 提取日期
pst_date = pst_now.date()

关键注意事项

  • 避免直接使用datetime.today():它返回的是运行环境的本地时间,显式指定tz=ZoneInfo("UTC")或pytz.utc能确保拿到准确的UTC时间。
  • 必须基于带时区的datetime对象转换:date对象没有时区属性,无法直接完成时区转换,所以要先保留完整的带时区时间信息。
  • 用America/Los_Angeles而非硬编码PST:这个时区标识符会自动处理夏令时(PDT)的切换,无需手动调整时差。

内容的提问来源于stack exchange,提问作者nomoresky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 20:55:22