diff --git a/lib/Cake/Test/Case/Utility/CakeTimeTest.php b/lib/Cake/Test/Case/Utility/CakeTimeTest.php index 81e737c3f..d95455c3b 100644 --- a/lib/Cake/Test/Case/Utility/CakeTimeTest.php +++ b/lib/Cake/Test/Case/Utility/CakeTimeTest.php @@ -353,6 +353,13 @@ class CakeTimeTest extends CakeTestCase { $time = time() - DAY; $this->assertEquals('Yesterday, ' . date('H:i', $time), $this->Time->niceShort($time)); + + $oldTimezone = date_default_timezone_get(); + date_default_timezone_set('Europe/London'); + + $result = $this->Time->niceShort('2005-01-15 10:00:00', new DateTimeZone('Europe/Brussels')); + $this->assertEqual('Jan 15th 2005, 11:00', $result); + date_default_timezone_set($oldTimezone); } /** diff --git a/lib/Cake/Utility/CakeTime.php b/lib/Cake/Utility/CakeTime.php index 70c6d46c3..475be34a9 100644 --- a/lib/Cake/Utility/CakeTime.php +++ b/lib/Cake/Utility/CakeTime.php @@ -200,7 +200,11 @@ class CakeTime { * @link http://book.cakephp.org/2.0/en/core-libraries/helpers/time.html#formatting */ public static function convert($serverTime, $timezone) { - $serverOffset = self::serverOffset(); + static $serverTimezone = null; + if (is_null($serverTimezone) || (date_default_timezone_get() !== $serverTimezone->getName())) { + $serverTimezone = new DateTimeZone(date_default_timezone_get()); + } + $serverOffset = $serverTimezone->getOffset(new DateTime('@' . $serverTime)); $gmtTime = $serverTime - $serverOffset; if (is_numeric($timezone)) { $userOffset = $timezone * (60 * 60);