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 ...@@ -219,6 +219,19 @@ class Date
return new Date($this->timestamp, $timezone); 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' * Helper function that returns the offset in the timezone string 'UTC+14'
* Returns false if the timezone is not UTC+X or UTC-X * Returns false if the timezone is not UTC+X or UTC-X
......
...@@ -34,10 +34,7 @@ class Updates_2_16_3_b3 extends PiwikUpdates ...@@ -34,10 +34,7 @@ class Updates_2_16_3_b3 extends PiwikUpdates
protected function adjustTimezoneBySite($hour, $idSite) protected function adjustTimezoneBySite($hour, $idSite)
{ {
$timezone = Site::getTimezoneFor($idSite); $timeZoneDifference = -ceil(Date::getUtcOffset($timezone)/3600);
$timestampUTC = Date::today()->getTimestampUTC();
$timestampZone = Date::adjustForTimezone($timestampUTC, $timezone);
$timeZoneDifference = -ceil(($timestampZone - $timestampUTC) / 3600);
return (24 + $hour + $timeZoneDifference) % 24; return (24 + $hour + $timeZoneDifference) % 24;
} }
} }
...@@ -29,10 +29,7 @@ class Controller extends \Piwik\Plugin\Controller ...@@ -29,10 +29,7 @@ class Controller extends \Piwik\Plugin\Controller
$siteTimezone = $this->site->getTimezone(); $siteTimezone = $this->site->getTimezone();
$timestampUTC = Date::today()->getTimestampUTC(); $view->timeZoneDifference = Date::getUtcOffset($siteTimezone) / 3600;
$timestampZone = Date::adjustForTimezone($timestampUTC, $siteTimezone);
$view->timeZoneDifference = ($timestampZone - $timestampUTC) / 3600;
$view->countWebsites = count(APISitesManager::getInstance()->getSitesIdWithAtLeastViewAccess()); $view->countWebsites = count(APISitesManager::getInstance()->getSitesIdWithAtLeastViewAccess());
// get report types // get report types
......
...@@ -58,6 +58,29 @@ class DateTest extends \PHPUnit_Framework_TestCase ...@@ -58,6 +58,29 @@ class DateTest extends \PHPUnit_Framework_TestCase
$this->fail('Expected exception not raised'); $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 * @group Core
*/ */
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter