我尝试在时间戳字段中提交值为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'
答案 0 :(得分:2)
导致您的问题的原因已被其他人澄清,但请允许我为您的案例提出我最喜欢的解决方案:
from dateutil import parser
parser.parse(data['time'])
有关dateutil
模块here的更多信息。
答案 1 :(得分:1)
这里有一些问题:
%Z(注意资本Z!)用于时区,例如GMT。一世 您认为您需要小写选项:%z,用于UTC偏移。
您可以在文档中阅读所有选项的内容:) https://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior
每个选项前都需要%符号。你不能写%Sz,你必须写%S%z。否则Python试图匹配2016-03-12T01:47:57z,而不是2016-03-12T01:47:57 + 00:00
不幸的是,您不能将%z选项与strptime一起使用,请参阅以下答案: ISO to datetime object: 'z' is a bad directive
我的解决方案:
听起来你甚至不想使用UTC偏移。没关系!如果你不能改变日期字符串的生成方式,也许这是最好的选择(虽然它可能有点脏):
t = datetime.datetime.strptime(data['time'][:-6], '%Y-%m-%dT%H:%M:%S')
这将从字符串中删除UTC偏移量。
如果您可以更改日期时间字符串的生成方式,那将是一个更好的解决方案,但我意识到您可能无法这样做。
我希望这有帮助!