I am receiving twitter messages that are sent at a certain date in the following format from twitter:
Tue Mar 29 08:11:25 +0000 2011
I want to store these dates in 'timestamp with time zone' field in postgresql with djangos DateTimeField field. When I store that string however I get this error:
ValidationError: [u'Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format.']
can I automatically transform the twitter datetype to a python datetime time (that does work elsewhere in my app for saving dates).
Writing something like this should convert a twitter date to a timestamp.
import time ts = time.strftime('%Y-%m-%d %H:%M:%S', time.strptime(tweet['created_at'],'%a %b %d %H:%M:%S +0000 %Y'))
Give this a go. It assumes the date format from twitter is RFC822 compliant (see the question linked to by @Adrien).
A naive datetime object is constructed (i.e. no timezone info). It is adjusted according to the timezone offset to UTC. Unless you have a need to keep the original timezone, I'd store the date time as UTC and format to local time when you display it.
from datetime import datetime, timedelta from email.utils import parsedate_tz s = 'Tue Mar 29 08:11:25 +0000 2011' def to_datetime(datestring): time_tuple = parsedate_tz(datestring.strip()) dt = datetime(*time_tuple[:6]) return dt - timedelta(seconds=time_tuple[-1])