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

Python如何将"2021-08-17T20:03:36.480-07:00"字符串转为本地时间

错误原因排查

你代码报错的核心原因是:astimezone是datetime对象的专属方法,你执行' '.join(utc_time.split("T"))后得到的是字符串类型结果,直接对字符串调用该方法就会触发AttributeError。

原始错误代码

from datetime import datetime

def convert_utc_local(utc_time):
    conv_time = ' '.join(utc_time.split("T"))
    return conv_time.astimezone(tzlocal())

报错信息:

AttributeError: 'str' object has no attribute 'astimezone'

正确实现方案

需求是将带时区的ISO格式时间字符串(例如2021-08-17T20:03:36.480-07:00)转换为YYYY-MM-DD HH:MM:SS格式的指定时区时间,以下是可直接运行的完整代码:

from datetime import datetime
from dateutil import tz
# 若需要使用运行环境的本地时区,可额外引入 from tzlocal import get_localzone

def convert_utc_local(utc_time):
    # 可根据需求替换时区标识,使用本地时区则替换为 to_zone = get_localzone()
    to_zone = tz.gettz('Asia/Tokyo')
    
    # 先将字符串转换为datetime对象,再做时区转换
    iso_to_local = datetime.fromisoformat(utc_time).astimezone(to_zone)
    # 移除时区信息后格式化为目标格式的字符串
    dt = str(iso_to_local.replace(tzinfo=None).isoformat(' ', timespec='seconds'))
    return dt

# 测试用例
print(convert_utc_local("2021-08-17T20:03:36.480-07:00"))
# 输出:2021-08-18 12:03:36

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:36:03