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

时间:2014-04-08 18:01:15

标签: python datetime python-2.7

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

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)的情况下本地解决这个问题,因此复制品中的解决方案对我没有帮助。

2 个答案:

答案 0 :(得分:2)

import dateutil.parser

date = dateutil.parser.parse(json_event['date_time'])

如果你没有dateutil,那就去吧。

pip install python-dateutil

答案 1 :(得分:0)

如果你总是得到UTC时间:忽略最后6个字符(空格,符号,4个字谜),然后在没有%Z的情况下转换为日期时间。

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

如果您也获得非UTC时间:

  1. 裁掉最后6个字符。
  2. 最后4位数字的strptime,格式为HHMM(%H%M) - > Y
  3. 在下面的第5步中获取标志并反转。
  4. 然后像上面那样获得剩余的日期时间(留下最后6个字符,格式中没有%Z) - > X
  5. 然后X-Y(或X + Y,反转从步骤3获得的内容)将为您提供日期时间对象。然后按照链接答案中的步骤使日期时间obj时区知道。