diff --git a/common/framework/DateTime.php b/common/framework/DateTime.php index 9f24cf0ae..b74bffec9 100644 --- a/common/framework/DateTime.php +++ b/common/framework/DateTime.php @@ -28,11 +28,11 @@ class DateTime { if ($format === self::FORMAT_RELATIVE) { - return self::getRelativeTimestamp($timestamp ?: time()); + return self::getRelativeTimestamp($timestamp ?? time()); } - $offset = Config::get('locale.internal_timezone') ?: date('Z', $timestamp); - return gmdate($format, ($timestamp ?: time()) + $offset); + $offset = Config::get('locale.internal_timezone') ?: date('Z', $timestamp ?? time()); + return gmdate($format, ($timestamp ?? time()) + $offset); } /** @@ -46,7 +46,7 @@ class DateTime { if ($format === self::FORMAT_RELATIVE) { - return self::getRelativeTimestamp($timestamp ?: time()); + return self::getRelativeTimestamp($timestamp ?? time()); } $timezone = self::getTimezoneForCurrentUser(); @@ -55,7 +55,7 @@ class DateTime self::$_timezones[$timezone] = new \DateTimeZone($timezone); } $datetime = new \DateTime(); - $datetime->setTimestamp($timestamp ?: time()); + $datetime->setTimestamp($timestamp ?? time()); $datetime->setTimezone(self::$_timezones[$timezone]); return $datetime->format($format); } @@ -123,7 +123,7 @@ class DateTime self::$_timezones[$timezone] = new \DateTimeZone($timezone); } $datetime = new \DateTime(); - $datetime->setTimestamp($timestamp ?: time()); + $datetime->setTimestamp($timestamp ?? time()); $datetime->setTimezone(self::$_timezones[$timezone]); return $datetime->getOffset(); } @@ -137,7 +137,7 @@ class DateTime */ public static function getTimezoneOffsetFromInternal(string $timezone, ?int $timestamp = null): int { - return self::getTimezoneOffset($timezone, $timestamp ?: time()) - Config::get('locale.internal_timezone'); + return self::getTimezoneOffset($timezone, $timestamp ?? time()) - Config::get('locale.internal_timezone'); } /** @@ -192,7 +192,7 @@ class DateTime */ public static function getRelativeTimestamp(?int $timestamp = null): string { - $diff = \RX_TIME - intval($timestamp ?: time()); + $diff = \RX_TIME - intval($timestamp ?? time()); $langs = lang('common.time_gap'); if ($diff < 3) diff --git a/tests/unit/framework/DateTimeTest.php b/tests/unit/framework/DateTimeTest.php index 036aa8f6e..3da9ccfbd 100644 --- a/tests/unit/framework/DateTimeTest.php +++ b/tests/unit/framework/DateTimeTest.php @@ -113,6 +113,18 @@ class DateTimeTest extends \Codeception\Test\Unit Rhymix\Framework\Config::set('locale.internal_timezone', 32400); $this->assertEquals($expected, zdate('19600419', 'Y-m-d H:i:s')); + // Test special dates. + Rhymix\Framework\Config::set('locale.internal_timezone', 32400); + $expected = '1970-01-01 09:00:00'; + $this->assertEquals($expected, zdate('19700101', 'Y-m-d H:i:s')); + $expected = '1969-12-31 15:00:00'; + $this->assertEquals($expected, zdate('1969-12-31 15:00:00', 'Y-m-d H:i:s')); + Rhymix\Framework\Config::set('locale.internal_timezone', 10800); + $expected = '1970-01-01 06:00:00'; + $this->assertEquals($expected, zdate('19700101000000', 'Y-m-d H:i:s')); + $expected = '1970-01-01 00:00:00'; + $this->assertEquals($expected, zdate('19691231180000', 'Y-m-d H:i:s')); + // Restore the internal timezone. Rhymix\Framework\Config::set('locale.internal_timezone', 10800); }