From e4d3fa523ad6a57900f84cf217d52e7e16679922 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Mon, 22 Apr 2019 22:17:52 +1000 Subject: [PATCH] Working on timezone conversions --- app/Utils/Traits/MakesTimezoneAdjustment.php | 16 ++------- tests/Unit/TimezoneTraitTest.php | 34 +++++++++++++++++--- 2 files changed, 33 insertions(+), 17 deletions(-) diff --git a/app/Utils/Traits/MakesTimezoneAdjustment.php b/app/Utils/Traits/MakesTimezoneAdjustment.php index e97d19c0f6..0e7a25915b 100644 --- a/app/Utils/Traits/MakesTimezoneAdjustment.php +++ b/app/Utils/Traits/MakesTimezoneAdjustment.php @@ -12,27 +12,17 @@ trait MakesTimezoneAdjustment public function createClientDate($utc_date , $timezone) { - $userTimezone = new \DateTimeZone($timezone); - $gmtTimezone = new \DateTimeZone('GMT'); - //$myDateTime = new \DateTime($utc_date, $gmtTimezone); - $offset = $userTimezone->getOffset($utc_date); - $myInterval = \DateInterval::createFromDateString((string)$offset . 'seconds'); - $utc_date->add($myInterval); + $utc_date->setTimezone(new \DateTimeZone($timezone)); return $utc_date; } - public function createUtcDate($client_date, $timezone) + public function createUtcDate($client_date) { - $userTimezone = new \DateTimeZone($timezone); - $gmtTimezone = new \DateTimeZone('GMT'); - //$clientDateTime = new \DateTime($client_date, $userTimezone); - $offset = $userTimezone->getOffset($client_date); - $myInterval = \DateInterval::createFromDateString((string)$offset . 'seconds'); - $client_date->add($myInterval); + $client_date->setTimezone(new \DateTimeZone('GMT')); return $client_date; } diff --git a/tests/Unit/TimezoneTraitTest.php b/tests/Unit/TimezoneTraitTest.php index 1182d4ab6b..2b5bc27297 100644 --- a/tests/Unit/TimezoneTraitTest.php +++ b/tests/Unit/TimezoneTraitTest.php @@ -15,16 +15,16 @@ class TimezoneTraitTest extends TestCase use MakesTimezoneAdjustment; - public function testConvertClientDateToUTCDateTimeTickOverNextDay() + public function testConvertClientDateToUTCDateTimeTickOverSameDay() { - $date_src = '2007-04-19 22:59'; + $date_src = '2007-04-19 23:59'; $client_timezone = 'Europe/Amsterdam'; // +1 UTC $date_time = new \DateTime($date_src, new \DateTimeZone($client_timezone)); - $utc_date = $this->createClientDate($date_time, $client_timezone); + $utc_date = $this->createUtcDate($date_time, $client_timezone); - $this->assertEquals($utc_date->format('Y-m-d'), '2007-04-19'); + $this->assertEquals('2007-04-19 21:59', $date_time->format('Y-m-d H:i')); } public function testConvertClientDateToUTCDateTimeSameDay() @@ -39,4 +39,30 @@ class TimezoneTraitTest extends TestCase $this->assertEquals($utc_date->format('Y-m-d'), '2007-04-19'); } + + public function testConvertClientDateToUTCDateTimeTickOverNextDay() + { + + $date_src = '2007-04-19 23:59'; + $client_timezone = 'Atlantic/Cape_Verde'; // +1 UTC + $date_time = new \DateTime($date_src, new \DateTimeZone($client_timezone)); + + $utc_date = $this->createUtcDate($date_time, $client_timezone); + + $this->assertEquals('2007-04-20 00:59', $date_time->format('Y-m-d H:i')); + } + + public function testConvertClientDateToUTCDateTimeSameDayDiffTimeZone() + { + + $date_src = '2007-04-19 22:59'; + $client_timezone = 'Atlantic/Cape_Verde'; // +1 UTC + $date_time = new \DateTime($date_src, new \DateTimeZone($client_timezone)); + + $utc_date = $this->createUtcDate($date_time, $client_timezone); + + $this->assertEquals('2007-04-19 23:59', $date_time->format('Y-m-d H:i')); + } + + } \ No newline at end of file