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

如何将时区时差转换为时区缩写,生成对应时间串并转UTC?

解答:生成带时区缩写的时间串并转换为UTC格式

一、生成带时区缩写(如PDT)的时间字符串

datetime.now().astimezone().isoformat() 不会输出时区缩写,要得到类似 2023-09-06T22:02:44-PDT 的格式,推荐用 strftime 配合可靠的时区模块实现:

Python 3.9+(内置zoneinfo)

from datetime import datetime
from zoneinfo import ZoneInfo

# 方式1:指定明确时区(更可靠,避免系统时区差异)
local_dt = datetime.now(ZoneInfo("America/Los_Angeles"))
# 方式2:自动获取本地时区
# local_dt = datetime.now().astimezone()

# 格式化带时区缩写的字符串
formatted_local = local_dt.strftime("%Y-%m-%dT%H:%M:%S-%Z")
print(formatted_local)  # 输出示例:2023-09-06T22:02:44-PDT

二、转换为带-UTC标识的UTC时间格式

要得到类似 2023-09-07T05:02:44-UTC 的UTC格式,只需将本地时间转成UTC后,手动拼接时区标识即可:

示例代码

# 接上面的local_dt
utc_dt = local_dt.astimezone(ZoneInfo("UTC"))

# 方式1:strftime拼接
formatted_utc = utc_dt.strftime("%Y-%m-%dT%H:%M:%S") + "-UTC"
# 方式2:替换isoformat的时区部分
# formatted_utc = utc_dt.isoformat(timespec='seconds').replace("+00:00", "-UTC")

print(formatted_utc)  # 输出示例:2023-09-07T05:02:44-UTC

兼容Python 3.8及以下版本(用pytz)

如果你的Python版本较旧,没有内置zoneinfo,可以安装第三方库pytz实现:

import pytz
from datetime import datetime

local_tz = pytz.timezone("America/Los_Angeles")
local_dt = datetime.now(local_tz)
formatted_local = local_dt.strftime("%Y-%m-%dT%H:%M:%S-%Z")

utc_dt = local_dt.astimezone(pytz.utc)
formatted_utc = utc_dt.strftime("%Y-%m-%dT%H:%M:%S") + "-UTC"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 15:40:58