ValueError将UTC时间转换为所需的格式和时区python

时间:2016-10-28 13:11:01

标签: python-2.7 datetime

我正在尝试将UTC时间转换为普通格式和时区。文档让我扔玩具!!有人可以给我写一个简单的例子。我在python中的代码;

m.startAt = datetime.strptime(r['StartAt'], '%d/%m/%Y %H:%M') 

错误

  
    

ValueError:时间数据' 2016-10-28T12:42:59.389Z'不符合格式'%d /%m /%Y%H:%M:'

  

2 个答案:

答案 0 :(得分:0)

该错误告诉您问题,格式字符串必须与您提供的日期时间字符串匹配。

例如:

x = datetime.strptime("2016-6-9 08:57", "%Y-%m-%d %H:%M")

注意第二个字符串与第一个字符串的格式匹配。

您的时间字符串如下所示:

2016-10-28T12:42:59.389Z

哪个与您的格式字符串不匹配。

答案 1 :(得分:0)

要使#!/bin/bash echo -n "Please enter the name of the tar file you wish to create with out extension " read nam echo -n "Please enter the path to the directories to tar " read pathin echo tar -czvf $nam.tar.gz excludes=`find $pathin -iname "*.CC" -exec echo "--exclude \'{}\'" \;|xargs` echo $pathin echo tar -czvf $nam.tar.gz $excludes $pathin 正常工作,您需要指定格式字符串正确匹配您要解析的字符串。错误表明您没有 - 因此解析失败。有关格式化参数,请参阅strftime() and strptime() Behavior

您收到的字符串会在错误消息中显示:datetime.strptime'2016-10-28T12:42:59.389Z' / Z / ISO 8601日期时间字符串)。

匹配字符串为Zulu,或者在从字符串中删除最终Z后'%Y-%m-%dT%H:%M:%S.%f%z'

有点棘手的是字符串中的最后'%Y-%m-%dT%H:%M:%S.%f',它可以由Z解析,但在GAE支持的python版本中可能不支持(在我的2.7.12中它是不支持):

%z

所以我剥离了>>> datetime.strptime('2016-10-28T12:42:59.389', '%Y-%m-%dT%H:%M:%S.%f%z') Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib64/python2.7/_strptime.py", line 324, in _strptime (bad_directive, format)) ValueError: 'z' is a bad directive in format '%Y-%m-%dT%H:%M:%S.%f%z' 并使用了其他格式:

Z

要获取字符串,请使用>>> stripped_z = '2016-10-28T12:42:59.389Z'[:-1] >>> stripped_z '2016-10-28T12:42:59.389' >>> that_datetime = datetime.strptime(stripped_z, '%Y-%m-%dT%H:%M:%S.%f') >>> that_datetime datetime.datetime(2016, 10, 28, 12, 42, 59, 389000)

strftime

如果你想使用时区会更复杂,但我的建议是在后端存储上坚持使用UTC,并为前端/客户端留下时区转换。

您可能希望使用>>> that_datetime.strftime('%d/%m/%Y %H:%M') '28/10/2016 12:42' 来存储值,在这种情况下您可以直接编写它:

DateTimeProperty