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

如何在Python中将UTC时间转换为太平洋时区时间?代码报错求助

Python UTC时间戳转太平洋时区的错误修复方案

嘿,我立马就发现问题所在啦!你定义的now_utc是一个毫秒级的时间戳(long整数),可不是datetime对象,所以它根本没有astimezone这个方法,这就是报错的原因~

先看看你原来的代码和报错信息:

错误代码

from datetime import datetime
from pytz import timezone
fmt = "%Y-%m-%d %H:%M:%S %Z%z"
# 当前UTC时间
now_utc = 1348283733848
# 转换为US/Pacific时区
now_pacific = now_utc.astimezone(timezone('US/Pacific'))
print now_pacific.strftime(fmt)

报错信息

Traceback (most recent call last):
File "", line 2, in
AttributeError: 'long' object has no attribute 'astimezone'

修复步骤&代码

要解决这个问题,我们需要先把时间戳转换成带UTC时区的datetime对象,再进行时区转换:

  1. 你的时间戳是毫秒级的,所以要先除以1000转换成秒级(datetime.fromtimestamp默认处理秒级时间戳)
  2. 生成datetime对象时指定tz=pytz.utc,确保这是UTC时间,避免默认使用本地时区导致错误
  3. 再调用astimezone转换到太平洋时区

修正后的代码如下:

from datetime import datetime
import pytz  # 单独导入pytz,方便指定UTC时区
from pytz import timezone

fmt = "%Y-%m-%d %H:%M:%S %Z%z"
# UTC毫秒时间戳
now_utc_ts = 1348283733848
# 转换为带UTC时区的datetime对象
now_utc = datetime.fromtimestamp(now_utc_ts / 1000, tz=pytz.utc)
# 转成US/Pacific时区
now_pacific = now_utc.astimezone(timezone('US/Pacific'))
print(now_pacific.strftime(fmt))

如果你的Python版本是3.9及以上,还可以用标准库的zoneinfo代替pytz,写法会更简洁:

from datetime import datetime
from zoneinfo import ZoneInfo

fmt = "%Y-%m-%d %H:%M:%S %Z%z"
now_utc_ts = 1348283733848
now_utc = datetime.fromtimestamp(now_utc_ts / 1000, tz=ZoneInfo("UTC"))
now_pacific = now_utc.astimezone(ZoneInfo("America/Los_Angeles"))
print(now_pacific.strftime(fmt))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:59:31