44

Given this string: "Fri, 09 Apr 2010 14:10:50 +0000" how does one convert it to a datetime object?

After doing some reading I feel like this should work, but it doesn't...

>>> from datetime import datetime >>> >>> str = 'Fri, 09 Apr 2010 14:10:50 +0000' >>> fmt = '%a, %d %b %Y %H:%M:%S %z' >>> datetime.strptime(str, fmt) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib64/python2.6/_strptime.py", line 317, in _strptime (bad_directive, format)) ValueError: 'z' is a bad directive in format '%a, %d %b %Y %H:%M:%S %z' 

It should be noted that this works without a problem:

>>> from datetime import datetime >>> >>> str = 'Fri, 09 Apr 2010 14:10:50' >>> fmt = '%a, %d %b %Y %H:%M:%S' >>> datetime.strptime(str, fmt) datetime.datetime(2010, 4, 9, 14, 10, 50) 

But I'm stuck with "Fri, 09 Apr 2010 14:10:50 +0000". I would prefer to convert exactly that without changing (or slicing) it in any way.

1
  • dateutil.parser.parse can do it in Python 2. pip install dateutil, and it should work from python 3.2 onwards. Commented Aug 12, 2015 at 15:37

1 Answer 1

40

It looks as if strptime doesn't always support %z. Python appears to just call the C function, and strptime doesn't support %z on your platform.

Note: from Python 3.2 onwards it will always work.

Sign up to request clarification or add additional context in comments.

3 Comments

Beat me to it! Check out: bugs.python.org/issue6641
Thanks to both of you, I did try this with python2.5/2.6/3.1 on my win machine and python2.6/3.1 on my *nix, all yielded the same failure. I do wonder if %z actually does works for anyone, I'm guessing not.
it is incorrect. strptime() is implemented in pure Python. Unlike strftime(); it behaves the same on all platforms. It won't work on Python 2 on any platform.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.