diff --git a/Lib/_strptime.py b/Lib/_strptime.py
index 4b7a7dd..a08a426 100644
--- a/Lib/_strptime.py
+++ b/Lib/_strptime.py
@@ -283,9 +283,13 @@
     def __calc_timezone(self):
         # Set self.__timezone by using time.tzname.
         #
-        # Empty string used for matching when timezone is not used/needed such
-        # as with UTC.
-        self.__timezone = self.__pad(time.tzname, 0)
+        # Empty string used for matching when timezone is not used/needed.
+        time_zones = ["UTC", "GMT"]
+        if time.daylight:
+            time_zones.extend(time.tzname)
+        else:
+            time_zones.append(time.tzname[0])
+        self.__timezone = self.__pad(time_zones, 0)
 
     def __calc_lang(self):
         # Set self.__lang by using __getlang().
@@ -490,16 +494,20 @@
         elif group_key == 'j':
             julian = int(found_dict['j'])
         elif group_key == 'Z':
+            # Since -1 is default value only need to worry about setting tz if
+            # it can be something other than -1.
             found_zone = found_dict['Z'].lower()
             if locale_time.timezone[0] == locale_time.timezone[1]:
                 pass #Deals with bad locale setup where timezone info is
                      # the same; first found on FreeBSD 4.4.
-            elif locale_time.timezone[0].lower() == found_zone:
+            elif found_zone in ("utc", "gmt"):
                 tz = 0
-            elif locale_time.timezone[1].lower() == found_zone:
-                tz = 1
             elif locale_time.timezone[2].lower() == found_zone:
-                tz = -1
+                tz = 0
+            elif time.daylight:
+                if locale_time.timezone[3].lower() == found_zone:
+                    tz = 1
+
     # Cannot pre-calculate datetime_date() since can change in Julian
     #calculation and thus could have different value for the day of the week
     #calculation
diff --git a/Lib/test/test_strptime.py b/Lib/test/test_strptime.py
index 140b226..c9d705b 100644
--- a/Lib/test/test_strptime.py
+++ b/Lib/test/test_strptime.py
@@ -58,9 +58,11 @@
 
     def test_timezone(self):
         # Make sure timezone is correct
-        if time.strftime("%Z", self.time_tuple):
-            self.compare_against_time(self.LT_ins.timezone, '%Z', 8,
-                                      "Testing against timezone failed")
+        timezone = time.strftime("%Z", self.time_tuple)
+        if timezone:
+            self.failUnless(timezone in self.LT_ins.timezone,
+                            "timezone %s not found in %s" %
+                            (timezone, self.LT_ins.timezone))
 
     def test_date_time(self):
         # Check that LC_date_time, LC_date, and LC_time are correct
@@ -293,18 +295,25 @@
         # When gmtime() is used with %Z, entire result of strftime() is empty.
         # Check for equal timezone names deals with bad locale info when this
         # occurs; first found in FreeBSD 4.4.
+        strp_output = _strptime.strptime("UTC", "%Z")
+        self.failUnlessEqual(strp_output.tm_isdst, 0)
+        strp_output = _strptime.strptime("GMT", "%Z")
+        self.failUnlessEqual(strp_output.tm_isdst, 0)
+        if time.daylight:
+            strp_output = _strptime.strptime(time.tzname[1], "%Z")
+            self.failUnlessEqual(strp_output[8], 1)
         time_tuple = time.localtime()
         strf_output = time.strftime("%Z")  #UTC does not have a timezone
         strp_output = _strptime.strptime(strf_output, "%Z")
         locale_time = _strptime.LocaleTime()
-        if locale_time.timezone[0] != locale_time.timezone[1]:
+        if time.tzname[0] != time.tzname[1]:
             self.failUnless(strp_output[8] == time_tuple[8],
                             "timezone check failed; '%s' -> %s != %s" %
                              (strf_output, strp_output[8], time_tuple[8]))
         else:
             self.failUnless(strp_output[8] == -1,
                             "LocaleTime().timezone has duplicate values but "
-                             "timzone value not set to 0")
+                             "timzone value not set to -1")
 
     def test_date_time(self):
         # Test %c directive
