S Anwar
S Anwar

Reputation: 83

Python: Date Conversion Error

I'm trying to convert a string into a date format, to be later stored into an SQLite database. Below is the code line at which I'm getting an error.

date_object = datetime.strptime(date, '%b %d, %Y %H:%M %Z')

And this is the error:

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'

Question 1: How do I resolve this error?

Question 2: Is this the right approach for preparing to store the date in SQLite later?

Please Note: Very new to programming.

Upvotes: 1

Views: 639

Answers (2)

Nickil Maveli
Nickil Maveli

Reputation: 29711

You could use pytz for the timezone conversion as shown:

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'>

I would suggest you to use dateutil incase you are handling multiple timezones of string.

Upvotes: 1

EndermanAPM
EndermanAPM

Reputation: 347

The problem is located in the %Z (Time zone) part of the format. As the documentation explains

%Z  Time zone name (empty string if the object is naive).   (empty), UTC, EST, CST

It looks like only UTC,EST and CST are valid. (Or it just doesn't recognize IST)

In order to fix this, you could use the %z parameter that accepts any UTC offset, like so:

struct_time = time.strptime("Aug 19, 2016 08:13 +0530", '%b %d, %Y %H:%M %z')

Update: Although this works fine in Python +3.2 it raises an exception when it's run with Python2

Upvotes: 0

Related Questions