Permalink
Browse files

Fixed server offset calculation

  • Loading branch information...
1 parent 9628910 commit 14b7210d2b78612cb21ec692e527a322e811ad59 @ADmad ADmad committed May 13, 2012
Showing with 12 additions and 1 deletion.
  1. +7 −0 lib/Cake/Test/Case/Utility/CakeTimeTest.php
  2. +5 −1 lib/Cake/Utility/CakeTime.php
@@ -353,6 +353,13 @@ public function testNiceShort() {
$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);
}
/**
@@ -200,7 +200,11 @@ protected static function _translateSpecifier($specifier) {
* @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);

0 comments on commit 14b7210

Please sign in to comment.