diff -ur date-cvs/date.inc date/date.inc
--- date-cvs/date.inc	2007-04-20 07:06:24.000000000 +1000
+++ date/date.inc	2007-05-28 23:57:23.000000000 +1000
@@ -234,13 +234,13 @@
   global $user;
 
   if ($offset) {
-  	return (time() - date("Z")) + offset;
+  	return (gmmktime()) + offset;
   }
   elseif (variable_get('configurable_timezones', 1) && $user->uid && strlen($user->timezone)) {
-    return (time() - date("Z")) + $user->timezone;
+    return (gmmktime()) + $user->timezone;
   }
   else {
-    return (time() - date("Z")) + variable_get('date_default_timezone', 0);
+    return (gmmktime()) + variable_get('date_default_timezone', 0);
   }
 }
 
diff -ur date-cvs/date.module date/date.module
--- date-cvs/date.module	2007-04-20 06:35:25.000000000 +1000
+++ date/date.module	2007-05-28 23:57:23.000000000 +1000
@@ -1100,10 +1100,10 @@
   // Time to compare dates to
   global $user;
   if (variable_get('configurable_timezones', 1) && $user->uid && strlen($user->timezone)) {
-    $now = (time() - date("Z")) + $user->timezone;
+    $now = (gmmktime()) + $user->timezone;
   }
   else {
-    $now = (time() - date("Z")) + variable_get('date_default_timezone', 0);
+    $now = (gmmktime()) + variable_get('date_default_timezone', 0);
   }
 
   // Pull local timestamps out of date objects.
