[21198] Improvement: use timezone rather than offset 4746:5203

Sigurd Nes <[email protected]> Wed, 14 Apr 2010 19:29:51 +0000
Newsgroups gmane.comp.web.phpgroupware.cvs
Message-ID <[email protected]>
Revision: 21198
          http://svn.sv.gnu.org/viewvc/?view=rev&root=phpgroupware&revision=21198
Author:   sigurdne
Date:     2010-04-14 19:29:51 +0000 (Wed, 14 Apr 2010)
Log Message:
-----------
Improvement: use timezone rather than offset 4746:5203

Modified Paths:
--------------
    people/sigurdne/modules/phpgwapi/trunk/inc/class.preferences.inc.php

Modified: people/sigurdne/modules/phpgwapi/trunk/inc/class.preferences.inc.php
===================================================================
--- people/sigurdne/modules/phpgwapi/trunk/inc/class.preferences.inc.php	2010-04-14 19:29:11 UTC (rev 21197)
+++ people/sigurdne/modules/phpgwapi/trunk/inc/class.preferences.inc.php	2010-04-14 19:29:51 UTC (rev 21198)
@@ -333,6 +333,22 @@
 			if (is_array($this->data))
 			{
 				reset($this->data);
+
+				// This one should cope with daylight saving time
+				// Create two timezone objects, one for UTC (GMT) and one for
+				// user pref
+				$dateTimeZone_utc = new DateTimeZone('UTC');
+				$dateTimeZone_pref = new DateTimeZone(isset($this->data['common']['timezone']) && $this->data['common']['timezone'] ? $this->data['common']['timezone'] : 'UTC');
+
+				// Create two DateTime objects that will contain the same Unix timestamp, but
+				// have different timezones attached to them.
+				$dateTime_utc = new DateTime("now", $dateTimeZone_utc);
+				$dateTime_pref = new DateTime("now", $dateTimeZone_pref);
+
+				// Calculate the GMT offset for the date/time contained in the $dateTime_utc
+				// object, but using the timezone rules as defined for Tokyo
+
+				$this->data['common']['tz_offset'] = (int)$dateTimeZone_pref->getOffset($dateTime_utc)/3600;
 			}
 			if ($this->debug && substr($GLOBALS['phpgw_info']['flags']['currentapp'],0,3) != 'log') 
 			{
@@ -341,6 +357,7 @@
 				echo "default<pre>"; print_r($this->default); echo "</pre>\n";
 				echo "effectiv<pre>";print_r($this->data); echo "</pre>\n";
 			}
+
 			return $this->data;
 		}