diff --git a/core/Date.php b/core/Date.php
index ad492eb6ea2c02a1f3a87d0b681b179c9b78b609..8922ed8ac235f852c7f04cfcb401e13d5aab7bce 100644
--- a/core/Date.php
+++ b/core/Date.php
@@ -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
diff --git a/core/Updates/2.16.3-b3.php b/core/Updates/2.16.3-b3.php
index a13f7379d006ac1ae4ca8f76da5eee9dec868b07..e5f2075c7179b3e3f9faa61b9b39428cd0ca08f0 100644
--- a/core/Updates/2.16.3-b3.php
+++ b/core/Updates/2.16.3-b3.php
@@ -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;
     }
 }
diff --git a/plugins/ScheduledReports/Controller.php b/plugins/ScheduledReports/Controller.php
index 8bdca90ab7da3abdda78301f0fad71d479023429..789b30fbc45260a5fa549c62acabee5f6a0efc8d 100644
--- a/plugins/ScheduledReports/Controller.php
+++ b/plugins/ScheduledReports/Controller.php
@@ -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
diff --git a/tests/PHPUnit/Unit/DateTest.php b/tests/PHPUnit/Unit/DateTest.php
index ee37aba1eb71a29e1ebddcf6b45da686bb32ab3c..0e075ee9854f58aec220a34b5f39588399505d0e 100644
--- a/tests/PHPUnit/Unit/DateTest.php
+++ b/tests/PHPUnit/Unit/DateTest.php
@@ -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
      */