如何将时区时差转换为时区缩写,生成对应时间串并转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
相关产品推荐
相关产品推荐

