我试图将字符串转换为日期格式,以后存储到SQLite数据库中。下面是我收到错误的代码行。
date_object = datetime.strptime(date, '%b %d, %Y %H:%M %Z')
这就是错误:
File "00Basic.py", line 20, in spider
date_object = datetime.strptime(date, '%b %d, %Y %H:%M %Z') File "C:\Python27\lib\_strptime.py", line 332, in _strptime
(data_string, format)) ValueError: time data 'Aug 19, 2016 08:13 IST' does not match format '%b %d, %Y %H %M %Z'
问题1:如何解决此错误?
问题2:这是准备将日期存储在SQLite中的正确方法吗?
请注意:编程非常新。
答案 0 :(得分:0)
问题位于格式的%Z
(时区)部分。
正如documentation解释
%Z Time zone name (empty string if the object is naive). (empty), UTC, EST, CST
看起来只有UTC,EST和CST才有效。 (或者它只是不识别 IST )
为了解决这个问题,您可以使用接受任何UTC偏移的%z
参数,如下所示:
struct_time = time.strptime("Aug 19, 2016 08:13 +0530", '%b %d, %Y %H:%M %z')
更新:虽然这在Python +3.2中运行良好,但在使用Python2运行时会引发异常
答案 1 :(得分:0)
您可以使用pytz
进行时区转换,如下所示:
from datetime import datetime
from pytz import timezone
s = "Aug 19, 2016 08:13 IST".replace('IST', '')
print(timezone('Asia/Calcutta').localize(datetime.strptime(s.rstrip(), '%b %d, %Y %H:%M')))
#2016-08-19 08:13:00+05:30
#<class 'datetime.datetime'>
我建议你使用dateutil
,因为你正在处理多个时区的字符串。