From 09c58d1adde92a60a3e7cd67f4e66c8b1a56be6a Mon Sep 17 00:00:00 2001 From: Thomas Bruederli Date: Sun, 28 Dec 2014 15:41:47 +0100 Subject: Make rcube_utils::strtotime() timezone aware (#1490163) --- tests/Framework/Utils.php | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'tests') diff --git a/tests/Framework/Utils.php b/tests/Framework/Utils.php index 10c90fb2b..1cd9e7429 100644 --- a/tests/Framework/Utils.php +++ b/tests/Framework/Utils.php @@ -278,6 +278,7 @@ class Framework_Utils extends PHPUnit_Framework_TestCase $test = array( '1' => 1, '' => 0, + 'abc-555' => 0, '2013-04-22' => 1366581600, '2013/04/22' => 1366581600, '2013.04.22' => 1366581600, @@ -286,6 +287,8 @@ class Framework_Utils extends PHPUnit_Framework_TestCase '22.04.2013' => 1366581600, '22.4.2013' => 1366581600, '20130422' => 1366581600, + '2013/06/21 12:00:00 UTC' => 1371816000, + '2013/06/21 12:00:00 Europe/Berlin' => 1371808800, ); foreach ($test as $datetime => $ts) { @@ -316,7 +319,27 @@ class Framework_Utils extends PHPUnit_Framework_TestCase foreach ($test as $datetime => $ts) { $result = rcube_utils::anytodatetime($datetime); - $this->assertSame($ts, $result ? $result->format('Y-m-d') : '', "Error parsing date: $datetime"); + $this->assertSame($ts, $result ? $result->format('Y-m-d') : false, "Error parsing date: $datetime"); + } + } + + /** + * rcube:utils::anytodatetime() + */ + function test_anytodatetime_timezone() + { + $tz = new DateTimeZone('Europe/Helsinki'); + $test = array( + 'Jan 1st 2014 +0800' => '2013-12-31 18:00', // result in target timezone + 'Jan 1st 14 45:42' => '2014-01-01 00:00', // force fallback to rcube_utils::strtotime() + 'Jan 1st 2014 UK' => '2014-01-01 00:00', + 'Invalid date' => false, + ); + + foreach ($test as $datetime => $ts) { + $result = rcube_utils::anytodatetime($datetime, $tz); + if ($result) $result->setTimezone($tz); // move to target timezone for comparison + $this->assertSame($ts, $result ? $result->format('Y-m-d H:i') : false, "Error parsing date: $datetime"); } } -- cgit v1.2.3