python,时间数据..不匹配..错误

时间:2016-03-14 13:47:21

标签: python python-3.x

我尝试在时间戳字段中提交值为2016-03-12T01:47:57+00:00的时间变量,但是我在检查错误的语法时会出错,但是当我使用函数来规范化日期时

   t = datetime.datetime.strptime(data['time'], '%Y-%m-%dT%H:%M:%SZ').strftime('%Y-%m-%d:%H:%M:%S')

我收到这样的错误。

  

时间数据'2016-03-12T01:47:57 + 00:00'格式'%Y-%m-%dT%H:%M:%SZ'

2 个答案:

答案 0 :(得分:2)

导致您的问题的原因已被其他人澄清,但请允许我为您的案例提出我最喜欢的解决方案:

from dateutil import parser
parser.parse(data['time'])

有关dateutil模块here的更多信息。

答案 1 :(得分:1)

这里有一些问题:

  1. %Z(注意资本Z!)用于时区,例如GMT。一世 您认为您需要小写选项:%z,用于UTC偏移。

    您可以在文档中阅读所有选项的内容:) https://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior

  2. 每个选项前都需要%符号。你不能写%Sz,你必须写%S%z。否则Python试图匹配2016-03-12T01:47:57z,而不是2016-03-12T01:47:57 + 00:00

  3. 不幸的是,您不能将%z选项与strptime一起使用,请参阅以下答案: ISO to datetime object: 'z' is a bad directive

  4. 我的解决方案:

    听起来你甚至不想使用UTC偏移。没关系!如果你不能改变日期字符串的生成方式,也许这是最好的选择(虽然它可能有点脏):

       t = datetime.datetime.strptime(data['time'][:-6], '%Y-%m-%dT%H:%M:%S')
    

    这将从字符串中删除UTC偏移量。

    如果您可以更改日期时间字符串的生成方式,那将是一个更好的解决方案,但我意识到您可能无法这样做。

    我希望这有帮助!