Skip to content
Extraits de code Groupes Projets
Valider 4c38c16a rédigé par sgiehl's avatar sgiehl
Parcourir les fichiers

move timezone offest calculation to date class

parent a16ea5af
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -219,6 +219,19 @@ class Date
return new Date($this->timestamp, $timezone);
}
/**
* Returns the offset to UTC time for the given timezone
*
* @param $timezone
* @return int offest in minutes
*/
public static function getUtcOffset($timezone)
{
$timestampUTC = self::today()->getTimestampUTC();
$timestampZone = self::adjustForTimezone($timestampUTC, $timezone);
return ($timestampZone - $timestampUTC);
}
/**
* Helper function that returns the offset in the timezone string 'UTC+14'
* Returns false if the timezone is not UTC+X or UTC-X
......
......@@ -34,10 +34,7 @@ class Updates_2_16_3_b3 extends PiwikUpdates
protected function adjustTimezoneBySite($hour, $idSite)
{
$timezone = Site::getTimezoneFor($idSite);
$timestampUTC = Date::today()->getTimestampUTC();
$timestampZone = Date::adjustForTimezone($timestampUTC, $timezone);
$timeZoneDifference = -ceil(($timestampZone - $timestampUTC) / 3600);
$timeZoneDifference = -ceil(Date::getUtcOffset($timezone)/3600);
return (24 + $hour + $timeZoneDifference) % 24;
}
}
......@@ -29,10 +29,7 @@ class Controller extends \Piwik\Plugin\Controller
$siteTimezone = $this->site->getTimezone();
$timestampUTC = Date::today()->getTimestampUTC();
$timestampZone = Date::adjustForTimezone($timestampUTC, $siteTimezone);
$view->timeZoneDifference = ($timestampZone - $timestampUTC) / 3600;
$view->timeZoneDifference = Date::getUtcOffset($siteTimezone) / 3600;
$view->countWebsites = count(APISitesManager::getInstance()->getSitesIdWithAtLeastViewAccess());
// get report types
......
......@@ -58,6 +58,29 @@ class DateTest extends \PHPUnit_Framework_TestCase
$this->fail('Expected exception not raised');
}
public function getTimezoneOffsets()
{
return array(
array('UTC-2', -7200),
array('UTC+1.5', 5400),
array('UTC', 0),
array('America/Belize', -21600),
array('EST', -18000),
array('Antarctica/Syowa', 10800),
);
}
/**
* @group Core
* @group DateTest
* @dataProvider getTimezoneOffsets
*/
public function testGetUtcOffset($timezone, $expectedOffset)
{
$offset = Date::getUtcOffset($timezone);
$this->assertEquals($expectedOffset, $offset);
}
/**
* @group Core
*/
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter