diff --git a/Lib/test/test_time.py b/Lib/test/test_time.py
index 460c989..4459f3e 100644
--- a/Lib/test/test_time.py
+++ b/Lib/test/test_time.py
@@ -48,11 +48,92 @@
             except ValueError:
                 self.fail('conversion specifier: %r failed.' % format)
 
-
     def test_asctime(self):
         time.asctime(time.gmtime(self.t))
         self.assertRaises(TypeError, time.asctime, 0)
 
+    def test_tzset(self):
+        from os import environ
+
+        # Epoch time of midnight Dec 25th 2002. Never DST in northern 
+        # hemisphere.
+        xmas2002 = 1040774400.0 
+
+        org_TZ = environ.get('TZ',None)
+        try:
+
+            # Make sure we can switch to UTC time and results are correct
+            # Note that unknown timezones default to UTC.
+            for tz in ('UTC','GMT','Luna/Tycho'):
+                environ['TZ'] = 'US/Eastern'
+                time.tzset()
+                environ['TZ'] = tz
+                time.tzset()
+                self.failUnlessEqual(
+                    time.gmtime(xmas2002),time.localtime(xmas2002)
+                    )
+                self.failUnlessEqual(time.timezone,time.altzone)
+                self.failUnlessEqual(time.daylight,0) 
+                self.failUnlessEqual(time.timezone,0)
+                self.failUnlessEqual(time.altzone,0)
+                self.failUnlessEqual(time.localtime(xmas2002).tm_isdst,0)
+
+            # Make sure we can switch to US/Eastern
+            environ['TZ'] = 'US/Eastern'
+            time.tzset()
+            self.failIfEqual(time.gmtime(xmas2002),time.localtime(xmas2002))
+            self.failUnlessEqual(time.tzname,('EST','EDT'))
+            self.failUnlessEqual(len(time.tzname),2)
+            self.failUnlessEqual(time.daylight,1)
+            self.failUnlessEqual(time.timezone,18000)
+            self.failUnlessEqual(time.altzone,14400)
+            self.failUnlessEqual(time.localtime(xmas2002).tm_isdst,0)
+            self.failUnlessEqual(len(time.tzname),2)
+
+            # Now go to the southern hemisphere. We want somewhere all OS's
+            # know about that has DST.
+            environ['TZ'] = 'Australia/Melbourne'
+            time.tzset()
+            self.failIfEqual(time.gmtime(xmas2002),time.localtime(xmas2002))
+            self.failUnless(time.tzname[0] in ('EST','AEST'))
+            self.failUnless(time.tzname[1] in ('EST','EDT','AEDT'))
+            self.failUnlessEqual(len(time.tzname),2)
+            self.failUnlessEqual(time.daylight,1)
+            self.failUnlessEqual(time.timezone,-36000)
+            self.failUnlessEqual(time.altzone,-39600)
+            self.failUnlessEqual(time.localtime(xmas2002).tm_isdst,1)
+
+            # Get some times from a timezone that isn't wallclock timezone
+            del environ['TZ']
+            time.tzset()
+            if time.timezone == 0:
+                environ['TZ'] = 'US/Eastern'
+            else:
+                environ['TZ'] = 'UTC'
+            time.tzset()
+            nonlocal = time.localtime(xmas2002)
+
+            # Then the same time in wallclock timezone
+            del environ['TZ']
+            time.tzset()
+            local = time.localtime(xmas2002)
+
+            # And make sure they arn't the same
+            self.failIfEqual(local,nonlocal) 
+
+            # Do some basic sanity checking after wallclock time set
+            self.failUnlessEqual(len(time.tzname),2)
+            time.daylight
+            time.timezone
+            time.altzone
+        finally:
+            # Repair TZ environment variable in case any other tests
+            # rely on it.
+            if org_TZ is not None:
+                environ['TZ'] = org_TZ
+            elif environ.has_key('TZ'):
+                del environ['TZ']
+            
 
 def test_main():
     test_support.run_unittest(TimeTestCase)
diff --git a/Misc/ACKS b/Misc/ACKS
index abc1c75..e968bc71 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -50,6 +50,7 @@
 Stephen Bevan
 Ron Bickers
 Dominic Binks
+Stuart Bishop
 Roy Bixler
 Martin Bless
 Pablo Bleyer
diff --git a/Misc/NEWS b/Misc/NEWS
index 877fb9e..0158c0f 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -32,6 +32,9 @@
 Extension modules
 -----------------
 
+- New function time.tzset() provides access to the C library tzet()
+  function, if supported.  (SF patch #675422.)
+
 - Using createfilehandler, deletefilehandler, createtimerhandler functions
   on Tkinter.tkinter (_tkinter module) no longer crashes the interpreter.
   See SF bug #692416.
diff --git a/Modules/timemodule.c b/Modules/timemodule.c
index 745ba8c..fc81ca4 100644
--- a/Modules/timemodule.c
+++ b/Modules/timemodule.c
@@ -554,85 +554,63 @@
 Convert a time tuple in local time to seconds since the Epoch.");
 #endif /* HAVE_MKTIME */
 
-static PyMethodDef time_methods[] = {
-	{"time",	time_time, METH_VARARGS, time_doc},
-#ifdef HAVE_CLOCK
-	{"clock",	time_clock, METH_VARARGS, clock_doc},
-#endif
-	{"sleep",	time_sleep, METH_VARARGS, sleep_doc},
-	{"gmtime",	time_gmtime, METH_VARARGS, gmtime_doc},
-	{"localtime",	time_localtime, METH_VARARGS, localtime_doc},
-	{"asctime",	time_asctime, METH_VARARGS, asctime_doc},
-	{"ctime",	time_ctime, METH_VARARGS, ctime_doc},
-#ifdef HAVE_MKTIME
-	{"mktime",	time_mktime, METH_VARARGS, mktime_doc},
-#endif
-#ifdef HAVE_STRFTIME
-	{"strftime",	time_strftime, METH_VARARGS, strftime_doc},
-#endif
-	{"strptime",	time_strptime, METH_VARARGS, strptime_doc},
-	{NULL,		NULL}		/* sentinel */
-};
+#ifdef HAVE_WORKING_TZSET
+void inittimezone(PyObject *module);
 
-
-PyDoc_STRVAR(module_doc,
-"This module provides various functions to manipulate time values.\n\
-\n\
-There are two standard representations of time.  One is the number\n\
-of seconds since the Epoch, in UTC (a.k.a. GMT).  It may be an integer\n\
-or a floating point number (to represent fractions of seconds).\n\
-The Epoch is system-defined; on Unix, it is generally January 1st, 1970.\n\
-The actual value can be retrieved by calling gmtime(0).\n\
-\n\
-The other representation is a tuple of 9 integers giving local time.\n\
-The tuple items are:\n\
-  year (four digits, e.g. 1998)\n\
-  month (1-12)\n\
-  day (1-31)\n\
-  hours (0-23)\n\
-  minutes (0-59)\n\
-  seconds (0-59)\n\
-  weekday (0-6, Monday is 0)\n\
-  Julian day (day in the year, 1-366)\n\
-  DST (Daylight Savings Time) flag (-1, 0 or 1)\n\
-If the DST flag is 0, the time is given in the regular time zone;\n\
-if it is 1, the time is given in the DST time zone;\n\
-if it is -1, mktime() should guess based on the date and time.\n\
-\n\
-Variables:\n\
-\n\
-timezone -- difference in seconds between UTC and local standard time\n\
-altzone -- difference in  seconds between UTC and local DST time\n\
-daylight -- whether local time should reflect DST\n\
-tzname -- tuple of (standard time zone name, DST time zone name)\n\
-\n\
-Functions:\n\
-\n\
-time() -- return current time in seconds since the Epoch as a float\n\
-clock() -- return CPU time since process start as a float\n\
-sleep() -- delay for a number of seconds given as a float\n\
-gmtime() -- convert seconds since Epoch to UTC tuple\n\
-localtime() -- convert seconds since Epoch to local time tuple\n\
-asctime() -- convert time tuple to string\n\
-ctime() -- convert time in seconds to string\n\
-mktime() -- convert local time tuple to seconds since Epoch\n\
-strftime() -- convert time tuple to string according to format specification\n\
-strptime() -- parse string to time tuple according to format specification");
-
-
-PyMODINIT_FUNC
-inittime(void)
+static PyObject *
+time_tzset(PyObject *self, PyObject *args)
 {
-	PyObject *m;
-	char *p;
-	m = Py_InitModule3("time", time_methods, module_doc);
+	PyObject* m;
 
-	/* Accept 2-digit dates unless PYTHONY2K is set and non-empty */
-	p = Py_GETENV("PYTHONY2K");
-	PyModule_AddIntConstant(m, "accept2dyear", (long) (!p || !*p));
-	/* Squirrel away the module's dictionary for the y2k check */
-	moddict = PyModule_GetDict(m);
-	Py_INCREF(moddict);
+	if (!PyArg_ParseTuple(args, ":tzset"))
+		return NULL;
+
+	m = PyImport_ImportModule("time");
+	if (m == NULL) {
+	    return NULL;
+	}
+
+	tzset();
+
+	/* Reset timezone, altzone, daylight and tzname */
+	inittimezone(m);
+	Py_DECREF(m);
+	
+	Py_INCREF(Py_None);
+	return Py_None;
+}
+
+PyDoc_STRVAR(tzset_doc,
+"tzset(zone)\n\
+\n\
+Initialize, or reinitialize, the local timezone to the value stored in\n\
+os.environ['TZ']. The TZ environment variable should be specified in\n\
+standard Uniz timezone format as documented in the tzset man page\n\
+(eg. 'US/Eastern', 'Europe/Amsterdam'). Unknown timezones will silently\n\
+fall back to UTC. If the TZ environment variable is not set, the local\n\
+timezone is set to the systems best guess of wallclock time.\n\
+Changing the TZ environment variable without calling tzset *may* change\n\
+the local timezone used by methods such as localtime, but this behaviour\n\
+should not be relied on.");
+#endif /* HAVE_WORKING_TZSET */
+
+void inittimezone(PyObject *m) {
+    /* This code moved from inittime wholesale to allow calling it from
+	time_tzset. In the future, some parts of it can be moved back
+	(for platforms that don't HAVE_WORKING_TZSET, when we know what they
+	are), and the extranious calls to tzset(3) should be removed.
+	I havn't done this yet, as I don't want to change this code as
+	little as possible when introducing the time.tzset and time.tzsetwall
+	methods. This should simply be a method of doing the following once,
+	at the top of this function and removing the call to tzset() from
+	time_tzset():
+
+	    #ifdef HAVE_TZSET
+	    tzset()
+	    #endif
+
+	And I'm lazy and hate C so nyer.
+     */
 #if defined(HAVE_TZNAME) && !defined(__GLIBC__) && !defined(__CYGWIN__)
 	tzset();
 #ifdef PYOS_OS2
@@ -712,6 +690,96 @@
 			   Py_BuildValue("(zz)", _tzname[0], _tzname[1]));
 #endif /* __CYGWIN__ */
 #endif /* !HAVE_TZNAME || __GLIBC__ || __CYGWIN__*/
+}
+
+
+static PyMethodDef time_methods[] = {
+	{"time",	time_time, METH_VARARGS, time_doc},
+#ifdef HAVE_CLOCK
+	{"clock",	time_clock, METH_VARARGS, clock_doc},
+#endif
+	{"sleep",	time_sleep, METH_VARARGS, sleep_doc},
+	{"gmtime",	time_gmtime, METH_VARARGS, gmtime_doc},
+	{"localtime",	time_localtime, METH_VARARGS, localtime_doc},
+	{"asctime",	time_asctime, METH_VARARGS, asctime_doc},
+	{"ctime",	time_ctime, METH_VARARGS, ctime_doc},
+#ifdef HAVE_MKTIME
+	{"mktime",	time_mktime, METH_VARARGS, mktime_doc},
+#endif
+#ifdef HAVE_STRFTIME
+	{"strftime",	time_strftime, METH_VARARGS, strftime_doc},
+#endif
+	{"strptime",	time_strptime, METH_VARARGS, strptime_doc},
+#ifdef HAVE_WORKING_TZSET
+	{"tzset",	time_tzset, METH_VARARGS, tzset_doc},
+#endif
+	{NULL,		NULL}		/* sentinel */
+};
+
+
+PyDoc_STRVAR(module_doc,
+"This module provides various functions to manipulate time values.\n\
+\n\
+There are two standard representations of time.  One is the number\n\
+of seconds since the Epoch, in UTC (a.k.a. GMT).  It may be an integer\n\
+or a floating point number (to represent fractions of seconds).\n\
+The Epoch is system-defined; on Unix, it is generally January 1st, 1970.\n\
+The actual value can be retrieved by calling gmtime(0).\n\
+\n\
+The other representation is a tuple of 9 integers giving local time.\n\
+The tuple items are:\n\
+  year (four digits, e.g. 1998)\n\
+  month (1-12)\n\
+  day (1-31)\n\
+  hours (0-23)\n\
+  minutes (0-59)\n\
+  seconds (0-59)\n\
+  weekday (0-6, Monday is 0)\n\
+  Julian day (day in the year, 1-366)\n\
+  DST (Daylight Savings Time) flag (-1, 0 or 1)\n\
+If the DST flag is 0, the time is given in the regular time zone;\n\
+if it is 1, the time is given in the DST time zone;\n\
+if it is -1, mktime() should guess based on the date and time.\n\
+\n\
+Variables:\n\
+\n\
+timezone -- difference in seconds between UTC and local standard time\n\
+altzone -- difference in  seconds between UTC and local DST time\n\
+daylight -- whether local time should reflect DST\n\
+tzname -- tuple of (standard time zone name, DST time zone name)\n\
+\n\
+Functions:\n\
+\n\
+time() -- return current time in seconds since the Epoch as a float\n\
+clock() -- return CPU time since process start as a float\n\
+sleep() -- delay for a number of seconds given as a float\n\
+gmtime() -- convert seconds since Epoch to UTC tuple\n\
+localtime() -- convert seconds since Epoch to local time tuple\n\
+asctime() -- convert time tuple to string\n\
+ctime() -- convert time in seconds to string\n\
+mktime() -- convert local time tuple to seconds since Epoch\n\
+strftime() -- convert time tuple to string according to format specification\n\
+strptime() -- parse string to time tuple according to format specification\n\
+tzset() -- change the local timezone");
+
+
+PyMODINIT_FUNC
+inittime(void)
+{
+	PyObject *m;
+	char *p;
+	m = Py_InitModule3("time", time_methods, module_doc);
+
+	/* Accept 2-digit dates unless PYTHONY2K is set and non-empty */
+	p = Py_GETENV("PYTHONY2K");
+	PyModule_AddIntConstant(m, "accept2dyear", (long) (!p || !*p));
+	/* Squirrel away the module's dictionary for the y2k check */
+	moddict = PyModule_GetDict(m);
+	Py_INCREF(moddict);
+
+	/* Set, or reset, module variables like time.timezone */
+	inittimezone(m);
+
 #ifdef MS_WINDOWS
 	/* Helper to allow interrupts for Windows.
 	   If Ctrl+C event delivered while not sleeping
@@ -901,3 +969,5 @@
 
 	return 0;
 }
+
+
diff --git a/configure b/configure
index 2e9574b..09337d8 100755
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
 #! /bin/sh
-# From configure.in Revision: 1.391 .
+# From configure.in Revision: 1.392 .
 # Guess values for system-dependent variables and create Makefiles.
 # Generated by GNU Autoconf 2.53 for python 2.3.
 #
@@ -16550,6 +16550,74 @@
 
 fi
 
+# tzset(3) exists and works like we expect it to
+echo "$as_me:$LINENO: checking for working tzset()" >&5
+echo $ECHO_N "checking for working tzset()... $ECHO_C" >&6
+if test "${ac_cv_working_tzset+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+if test "$cross_compiling" = yes; then
+  ac_cv_working_tzset=no
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+#include "confdefs.h"
+
+#include <stdlib.h>
+#include <time.h>
+int main()
+{
+	int gmt_hour;
+	int eastern_hour;
+	time_t now;
+	now = time((time_t*)NULL);
+	putenv("TZ=GMT");
+	tzset();
+	gmt_hour = localtime(&now)->tm_hour;
+	putenv("TZ=US/Eastern");
+	tzset();
+	eastern_hour = localtime(&now)->tm_hour;
+	if (eastern_hour == gmt_hour)
+	    exit(1);
+	exit(0);
+}
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_working_tzset=yes
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+( exit $ac_status )
+ac_cv_working_tzset=no
+fi
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+
+echo "$as_me:$LINENO: result: $ac_cv_working_tzset" >&5
+echo "${ECHO_T}$ac_cv_working_tzset" >&6
+if test "$ac_cv_working_tzset" = yes
+then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_WORKING_TZSET 1
+_ACEOF
+
+fi
+
 # Look for subsecond timestamps in struct stat
 echo "$as_me:$LINENO: checking for tv_nsec in struct stat" >&5
 echo $ECHO_N "checking for tv_nsec in struct stat... $ECHO_C" >&6
diff --git a/configure.in b/configure.in
index f73df53..bcde551 100644
--- a/configure.in
+++ b/configure.in
@@ -2500,6 +2500,39 @@
   [Define if nice() returns success/failure instead of the new priority.])
 fi
 
+# tzset(3) exists and works like we expect it to
+AC_MSG_CHECKING(for working tzset())
+AC_CACHE_VAL(ac_cv_working_tzset, [
+AC_TRY_RUN([
+#include <stdlib.h>
+#include <time.h>
+int main()
+{
+	int gmt_hour;
+	int eastern_hour;
+	time_t now;
+	now = time((time_t*)NULL);
+	putenv("TZ=GMT");
+	tzset();
+	gmt_hour = localtime(&now)->tm_hour;
+	putenv("TZ=US/Eastern");
+	tzset();
+	eastern_hour = localtime(&now)->tm_hour;
+	if (eastern_hour == gmt_hour)
+	    exit(1);
+	exit(0);
+}
+],
+ac_cv_working_tzset=yes,
+ac_cv_working_tzset=no,
+ac_cv_working_tzset=no)])
+AC_MSG_RESULT($ac_cv_working_tzset)
+if test "$ac_cv_working_tzset" = yes
+then
+  AC_DEFINE(HAVE_WORKING_TZSET, 1,
+  [Define if tzset() actually switches the local timezone in a meaningful way.])
+fi
+
 # Look for subsecond timestamps in struct stat
 AC_MSG_CHECKING(for tv_nsec in struct stat)
 AC_CACHE_VAL(ac_cv_stat_tv_nsec,
diff --git a/pyconfig.h.in b/pyconfig.h.in
index e2dd4d2..37fd5fc 100644
--- a/pyconfig.h.in
+++ b/pyconfig.h.in
@@ -613,6 +613,10 @@
 /* Define to 1 if you have the `wcscoll' function. */
 #undef HAVE_WCSCOLL
 
+/* Define if tzset() actually switches the local timezone in a meaningful way.
+   */
+#undef HAVE_WORKING_TZSET
+
 /* Define to 1 if you have the `_getpty' function. */
 #undef HAVE__GETPTY
 
