datetime.datetime.strptime not present in Python 2.4.1

14,266

Solution 1

Note that strptime is still in the time module, even as of 2.7.1, as well as in datetime.

If, however, you look at the documentation for datetime in a recent version, you will see this under strptime:

This is equivalent to datetime(*(time.strptime(date_string, format)[0:6]))

so you can use that expression instead. Note that the same entry also says "New in version 2.5".

Solution 2

I had a similar problem as well.

Based on Daniel's answer, this works for me when you're not sure under which Python version (2.4 vs 2.6) the script will be running:

from datetime import datetime
import time

if hasattr(datetime, 'strptime'):
    #python 2.6
    strptime = datetime.strptime
else:
    #python 2.4 equivalent
    strptime = lambda date_string, format: datetime(*(time.strptime(date_string, format)[0:6]))

print strptime("2011-08-28 13:10:00", '%Y-%m-%d %H:%M:%S')

-Fi

Solution 3

new methods are usually documented in the Library reference with "News since version...." I can not remember that methods have disappeared or were removed...which would be a backward compatibility foul. Methods subject to removal are usually official deprecated with a DeprecationWarning.

Share:
14,266

Related videos on Youtube

Nathan
Author by

Nathan

Updated on August 29, 2020

Comments

  • Nathan
    Nathan over 3 years

    Our team is required to use Python 2.4.1 in certain circumstances. strptime is not present in the datetime.datetime module in Python 2.4.1:

    Python 2.4.1 (#65, Mar 30 2005, 09:13:57) [MSC v.1310 32 bit (Intel)]
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import datetime
    >>> datetime.datetime.strptime
    Traceback (most recent call last):
      File "<string>", line 1, in <fragment>
    AttributeError: type object 'datetime.datetime' has no attribute 'strptime'
    

    As opposed to in 2.6:

    Python 2.6.6 (r266:84297, Aug 24 2010, 18:46:32) [MSC v.1500 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import datetime
    >>> datetime.datetime.strptime
    <built-in method strptime of type object at 0x1E1EF898>
    

    While typing this up, I found it in the time module of 2.4.1:

    Python 2.4.1 (#65, Mar 30 2005, 09:16:17) [MSC v.1310 32 bit (Intel)]
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import time
    >>> time.strptime
    <built-in function strptime>
    

    I take it that strptime moved at some point? What's the best way to check things like this. I tried looking through python's release history but couldn't find anything.

  • Nathan
    Nathan about 13 years
    That explains everything - I thought I checked the documentation to see if it mentioned when this was introduced, but I clearly missed that. Thanks!

Related