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

如何在Python或Django中将带时区时间转换为YYYY-MM-DD HH:MM:SS格式

Python/Django 带时区时间格式转换实现方案

Python 原生实现

方法1:使用python-dateutil(推荐,适配任意时区时间格式)

不需要提前定义输入时间的格式,可自动识别绝大多数常见的带时区时间字符串:
首先安装依赖:
pip install python-dateutil
代码示例:

from dateutil import parser

# 待转换的时间字符串
input_time_str = "Tue Sep 07 2021 08:34:00 GMT+0530 (India Standard Time)"
# 自动解析为带时区信息的datetime对象
datetime_obj = parser.parse(input_time_str)
# 格式化为目标格式
formatted_time = datetime_obj.strftime("%Y-%m-%d %H:%M:%S")

print(formatted_time)
# 输出:2021-09-07 08:34:00

如果需要统一转换为UTC时区后再格式化,可调整为:

from datetime import timezone
utc_datetime = datetime_obj.astimezone(timezone.utc)
formatted_utc_time = utc_datetime.strftime("%Y-%m-%d %H:%M:%S")
# 输出:2021-09-07 03:04:00

方法2:仅使用Python标准库

不需要安装第三方依赖,适合固定输入格式的场景:

from datetime import datetime

input_time_str = "Tue Sep 07 2021 08:34:00 GMT+0530 (India Standard Time)"
# 先移除末尾括号内的时区名称部分
processed_str = input_time_str.split(" (")[0]
# 按指定格式解析
datetime_obj = datetime.strptime(processed_str, "%a %b %d %Y %H:%M:%S GMT%z")
# 格式化输出
formatted_time = datetime_obj.strftime("%Y-%m-%d %H:%M:%S")

Django 场景实现

如果你的Django项目开启了时区支持(USE_TZ = True),可以直接结合Django自带的时区工具处理,自动适配项目配置的默认时区:

from dateutil import parser
from django.utils import timezone
from django.conf import settings

input_time_str = "Tue Sep 07 2021 08:34:00 GMT+0530 (India Standard Time)"
datetime_obj = parser.parse(input_time_str)
# 转换为Django项目配置的默认时区时间
local_dt = timezone.localtime(datetime_obj, timezone=settings.TIME_ZONE)
formatted_time = local_dt.strftime("%Y-%m-%d %H:%M:%S")

如果需要将转换后的时间存入DateTimeField字段,直接传入带时区信息的datetime_obj对象即可,Django会自动完成时区转换存储。

注意事项

  • 输入时间如果包含非英文的星期、月份缩写,需要额外指定locale参数才能正确解析
  • 如果你需要所有转换后的时间统一为某个指定时区,格式化前先调用astimezone(目标时区对象)做时区转换即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 20:48:03