Python 如何将UTC日期时间字符串转换为日期?

Python 如何将UTC日期时间字符串转换为日期?,python,datetime,python-2.7,Python,Datetime,Python 2.7,有一个datetime字符串,我想将其转换回日期。时区给我带来了麻烦,我不知道如何解决它 datetime.datetime.strptime(json_event['date_time'], '%a, %d %b %Y %H:%M:%S %Z') 我收到错误消息: ValueError:时间数据“2014年4月8日星期二17:57:34-0000”不匹配 格式“%a,%d%b%Y%H:%M:%S%Z” 如果我退出%Z,我会收到以下错误消息: ValueError:未转换的数据仍保留:-000

有一个datetime字符串,我想将其转换回日期。时区给我带来了麻烦,我不知道如何解决它

datetime.datetime.strptime(json_event['date_time'], '%a, %d %b %Y %H:%M:%S %Z')
我收到错误消息:

ValueError:时间数据“2014年4月8日星期二17:57:34-0000”不匹配 格式“%a,%d%b%Y%H:%M:%S%Z”

如果我退出
%Z
,我会收到以下错误消息:

ValueError:未转换的数据仍保留:-0000

日期最初是UTC:

current_date = datetime.datetime.utcnow()
更新:

我希望在不使用任何外部库(如
dateutil.parser
)的情况下以本机方式解决此问题,因此副本中的解决方案对我没有帮助

import dateutil.parser

date = dateutil.parser.parse(json_event['date_time'])
如果您没有
dateutil
,请获取它

pip install python-dateutil

如果您总是获得UTC时间:忽略最后6个字符(空格、符号、4个数字),然后转换为datetime,就像您在没有%Z时所做的那样

您将遇到的一个问题是,您的系统将假定它是您的本地时区,如果您将其转换为任何其他时区,它将错误地转换。在这种情况下,下一步是使用另一个问题

如果您还获得了非UTC时间:

  • 裁剪出最后6个字符
  • 在最后4位数字上执行strtime,格式为HHMM(
    %H%M
    )-->
    Y
  • 在下面的第5步中获得符号并反转
  • 然后按照上面的方法获取其余的日期时间(保留最后6个字符,格式中没有%Z)-->
    X
  • 然后X-Y(或者X+Y,颠倒从步骤3得到的结果)将为您提供一个datetime对象。然后按照链接答案中的步骤使datetime obj时区感知

  • 我不想使用
    dateutil.parser
    的可能重复项。还有其他两个关于这个问题的好答案,看看吧,你的意思是接受的答案有一个好的解决方案吗?阅读下面的评论。我把这个留在这里,也许其他人有更好的主意。谢谢,教授,我知道这个解决方案。如果可能的话,我宁愿不使用任何外部lib。@Hooman那么您必须进行一些字符串操作,因为python stdlib不处理
    -0000
    (等等)