Parsing time string in Python Parsing time string in Python python python

Parsing time string in Python


datetime.datetime.strptime has problems with timezone parsing. Have a look at the dateutil package:

>>> from dateutil import parser>>> parser.parse("Tue May 08 15:14:45 +0800 2012")datetime.datetime(2012, 5, 8, 15, 14, 45, tzinfo=tzoffset(None, 28800))


Your best bet is to have a look at strptime()

Something along the lines of

>>> from datetime import datetime>>> date_str = 'Tue May 08 15:14:45 +0800 2012'>>> date = datetime.strptime(date_str, '%a %B %d %H:%M:%S +0800 %Y')>>> datedatetime.datetime(2012, 5, 8, 15, 14, 45)

Im not sure how to do the +0800 timezone unfortunately, maybe someone else can help out with that.

The formatting strings can be found at http://docs.python.org/library/time.html#time.strftime and are the same for formatting the string for printing.

Hope that helps

Mark

PS, Your best bet for timezones in installing pytz from pypi. ( http://pytz.sourceforge.net/ )in fact I think pytz has a great datetime parsing method if i remember correctly. The standard lib is a little thin on the ground with timezone functionality.


Here's a stdlib solution that supports a variable utc offset in the input time string:

>>> from email.utils import parsedate_tz, mktime_tz>>> from datetime import datetime, timedelta>>> timestamp = mktime_tz(parsedate_tz('Tue May 08 15:14:45 +0800 2012'))>>> utc_time = datetime(1970, 1, 1) + timedelta(seconds=timestamp)>>> utc_timedatetime.datetime(2012, 5, 8, 7, 14, 45)