在我的Django应用程序中,我有一个datetime对象,我需要序列化然后反序列化。当我尝试它时,我收到错误:
ValueError:时间数据'2016-05-31T18:57:17.280939 + 00:00'没有 匹配格式'%Y-%m-%d%H:%M:%S。%f'
我的序列化和反序列化代码是:
timestring = time.isoformat() #where timestring is DateTimeField type object, instantiated in Django
timeobj = datetime.strptime(timestring, "%Y-%m-%d %H:%M:%S.%f")
我做错了什么,如何克服驼峰?非常感谢您的指导。
答案 0 :(得分:1)
timeobj = datetime.strptime(timestring, "%Y-%m-%dT%H:%M:%S.%f+00:00")
(添加T
作为日期/时间分隔符,并硬编码utc偏移字符串部分)
将解决您的问题...我认为它相当安全......我个人总是跟着
from dateutil.parser import parse as date_parse
dt_obj = date_parse(timestring)
几乎总是有效,并且不要求我对您可能需要的日期字符串进行硬编码pip install python-dateutil
答案 1 :(得分:0)
所以这里有两件事:
您的格式字符串在$db = mysqli_connect("localhost","my_user","my_password","my_db");
和%d
之间有一个空格,但测试字符串有一个%H
。
Python T
不适用于时区名称/偏移。来自relevant docs:
datetime.datetime.strptime
返回与date_string对应的日期时间,根据进行解析 格式。这相当于datetime(*(time.strptime(date_string, 格式)[0:6]。))
因此,您可以提取classmethod datetime.strptime(date_string, format)
,year
,month
,day
,hour
,minute
和second
,但是microsecond
指令仅适用于%z
,而非strftime
。
所以,总结一下:
strptime
但
In [18]: datetime.strptime(datetime.today().isoformat(), '%Y-%m-%dT%H:%M:%S.%f')
Out[18]: datetime.datetime(2016, 5, 31, 15, 20, 20, 581261)