diff --git a/core/ScheduledTime.php b/core/ScheduledTime.php index 5060a33d56ce61a3c9fab51cde7b59d42301ed5e..53e1e867933790f3e3c246164eeb2e8b2e745a45 100644 --- a/core/ScheduledTime.php +++ b/core/ScheduledTime.php @@ -138,12 +138,15 @@ abstract class ScheduledTime $dateInTimezone = Date::factory($arbitraryDateInUTC, $this->timezone); $midnightInTimezone = date('H', $dateInTimezone->getTimestamp()); - $hoursDifference = (24 - $midnightInTimezone) % 24; if ($arbitraryDateInUTC->isEarlier($dateInTimezone)) { - $hoursDifference = -1 * $hoursDifference; + $hoursDifference = 0 - $midnightInTimezone; + } else { + $hoursDifference = 24 - $midnightInTimezone; } + $hoursDifference = $hoursDifference % 24; + $rescheduledTime += (3600 * $hoursDifference); if ($this->getTime() > $rescheduledTime) { diff --git a/tests/PHPUnit/Core/ScheduledTime/DailyTest.php b/tests/PHPUnit/Core/ScheduledTime/DailyTest.php index c825cbfb6fc4ae42154dc6de169da20360c89522..a63302cffca88b7053c527e00f38f08b88ce80a3 100644 --- a/tests/PHPUnit/Core/ScheduledTime/DailyTest.php +++ b/tests/PHPUnit/Core/ScheduledTime/DailyTest.php @@ -101,7 +101,7 @@ class ScheduledTime_DailyTest extends PHPUnit_Framework_TestCase $mock->setTimezone('Pacific/Auckland'); $timeAuckland = $mock->getRescheduledTime(); - $this->assertEquals(-11 * $oneHourInSeconds, $timeAuckland - $timeUTC); + $this->assertEquals(-13 * $oneHourInSeconds, $timeAuckland - $timeUTC); $mock->setTimezone('America/Los_Angeles'); diff --git a/tests/PHPUnit/Core/ScheduledTime/MonthlyTest.php b/tests/PHPUnit/Core/ScheduledTime/MonthlyTest.php index 5c837cdd31d0daa85867a262e9b070fbf5140199..2f26d083c3dc015365a6cff27928c786dea51d9c 100644 --- a/tests/PHPUnit/Core/ScheduledTime/MonthlyTest.php +++ b/tests/PHPUnit/Core/ScheduledTime/MonthlyTest.php @@ -112,7 +112,7 @@ class ScheduledTime_MonthlyTest extends PHPUnit_Framework_TestCase $mock->setTimezone('Pacific/Auckland'); $timeAuckland = $mock->getRescheduledTime(); - $this->assertEquals(-11 * $oneHourInSeconds, $timeAuckland - $timeUTC); + $this->assertEquals(-13 * $oneHourInSeconds, $timeAuckland - $timeUTC); $mock->setTimezone('America/Los_Angeles'); diff --git a/tests/PHPUnit/Core/ScheduledTime/WeeklyTest.php b/tests/PHPUnit/Core/ScheduledTime/WeeklyTest.php index ecf5bbaf58e2ea874dd1b55808c3628c12b9f3a4..46bf3725cc011b4e6bfd1dc49f338ee5c157b210 100644 --- a/tests/PHPUnit/Core/ScheduledTime/WeeklyTest.php +++ b/tests/PHPUnit/Core/ScheduledTime/WeeklyTest.php @@ -148,7 +148,7 @@ class ScheduledTime_WeeklyTest extends PHPUnit_Framework_TestCase $mock->setTimezone('Pacific/Auckland'); $timeAuckland = $mock->getRescheduledTime(); - $this->assertEquals(-11 * $oneHourInSeconds, $timeAuckland - $timeUTC); + $this->assertEquals(-13 * $oneHourInSeconds, $timeAuckland - $timeUTC); $mock->setTimezone('America/Los_Angeles');