Python:日期转换错误

时间:2016-08-19 08:01:39

标签: python sqlite date-conversion

我试图将字符串转换为日期格式,以后存储到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中的正确方法吗?

请注意:编程非常新。

2 个答案:

答案 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,因为你正在处理多个时区的字符串。