Fix incorrect timestamp display when timestamp is zero #2621

This commit is contained in:
Kijin Sung 2025-12-17 11:32:37 +09:00
parent 8e5480674d
commit 0c8aa306ec
2 changed files with 20 additions and 8 deletions

View file

@ -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)

View file

@ -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);
}