        } else {
        
          // Add number of years times number of days per year to days
-@@ -197,7 +189,7 @@
+@@ -197,7 +193,7 @@
          $days+= $month_table[$leap][intval($month)]- $day;
          
          // Calculate stamp

-        ));
+        );
       }
+
+      if ($gmtOffset) {
+        sscanf($gmtOffset, '%3d%2d', $h, $m);
+        $this->_gmtofs= $h * 3600 + $m * 60;
+      } else {
+        $this->_gmtofs= date('Z');
+      }
     }
     
     /**
-     * Get local time zones' offset from GMT (Greenwich main time). 
-     * Caches the result.
-     *

      * @return  bool
      */
     public function isAfter($date) {
@@ -413,7 +400,7 @@
      * @return  int Unix-Timestamp
      */
     public function getTime() {
-      return $this->_utime;
+      return (int)$this->_utime - $this->_gmtofs;
     }
 
     /**
@@ -487,6 +474,15 @@
     public function getDayOfWeek() {
       return $this->wday;
     }
+
+    /**
+     * Get GMT offset in seconds.
+     *
+     * @return  int
+     */
+    public function getGmtOffset() {
+      return $this->_gmtofs;
+    }
     
     /**
      * Create a string representation
@@ -496,15 +492,7 @@
      * @return  string the formatted date
      */
     public function toString($format= 'r') {
