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

Python如何将'07:37 am GMT+5.30 on 10/11/2011'转为datetime对象

错误原因

  • 解析字符串需要调用datetime类的strptime()方法,直接向datetime构造函数传入格式字符串不符合语法规范
  • 替换+5.30后的字符串仍保留GMT字段,但你编写的格式模板没有匹配该字段,导致格式匹配失败
  • 输出用的Print首字母大写,Python内置输出函数为小写的print
  • 配合%p(上午/下午标识)使用的小时格式化符应为12小时制的%I,你用的%H是24小时制,会导致下午时间解析错误

解决方法1:移除时区信息后解析

如果你不需要保留原时区信息,可以按以下代码修改:

import datetime
b = "07:37 am GMT+5.30 on 10/11/2011"
a = b.replace("+5.30", "")
# strptime第一个参数为待解析字符串,第二个为匹配模板
c = datetime.datetime.strptime(a, "%I:%M %p GMT on %d/%m/%Y")
print(c)

运行输出结果为:2011-11-10 07:37:00

解决方法2:保留时区信息解析

如果需要保留GMT+5.30的时区偏移信息,不需要手动裁剪字符串,直接匹配时区字段即可:

import datetime
b = "07:37 am GMT+5.30 on 10/11/2011"
# 用%z匹配时区偏移字段
c = datetime.datetime.strptime(b, "%I:%M %p GMT%z on %d/%m/%Y")
print(c)
print("对应时区:", c.tzinfo)

运行输出结果为:

2011-11-10 07:37:00+05:30
对应时区: UTC+05:30

注意事项

部分中文系统环境下,Python的%p标识符默认只能识别大写的AM/PM,如果解析报错可以先将字符串里的am/pm转为大写再处理:

b = b.replace('am', 'AM').replace('pm', 'PM')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:57:05