]> granicus.if.org Git - python/commitdiff
strptime(): The code that was adding 12 to PM hours was incorrect
authorBarry Warsaw <barry@python.org>
Thu, 29 Aug 2002 15:29:49 +0000 (15:29 +0000)
committerBarry Warsaw <barry@python.org>
Thu, 29 Aug 2002 15:29:49 +0000 (15:29 +0000)
because it added it to 12 PM too.  12 PM should be hour 12 not hour
24.

Also cleaned up a minor style nit.  There are more style problems in
this file that I'll clean up next (but I didn't want them to overwhelm
the substance of this fix).

Lib/_strptime.py

index f7e04cdb2fde186ae80a4e7e18d0489131ba9d61..6174718893b1c75fa24cc4ed96721d330ad21bd7 100644 (file)
@@ -415,12 +415,19 @@ def strptime(data_string, format="%a %b %d %H:%M:%S %Y"):
                     hour = int(found_dict['H'])
                 else:
                     hour = int(found_dict['I'])
-                    if found_dict.has_key('p'):
-                        if found_dict['p'] == locale_time.am_pm[1]:
+                    ampm = found_dict.get('p')
+                    if ampm == locale_time.am_pm[0]:
+                        # We're in AM so the hour is correct unless we're
+                        # looking at 12 midnight.
+                        # 12 midnight == 12 AM == hour 0
+                        if hour == 12:
+                            hour = 0
+                    elif ampm == locale_time.am_pm[1]:
+                        # We're in PM so we need to add 12 to the hour unless
+                        # we're looking at 12 noon.
+                        # 12 noon == 12 PM == hour 12
+                        if hour != 12:
                             hour += 12
-                        else:
-                            if hour is 12:
-                                hour = 0
             elif group_key is 'M':
                 minute = int(found_dict['M'])
             elif group_key is 'S':