From a1dc6e2417550ea6b0d7241dce039baa923c9b47 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Wed, 28 Dec 2022 00:32:26 -0500 Subject: [PATCH] Switch rounding to flooring in Temporal::getRelativeDate - Add tests for regression --- src/Util/Temporal.php | 2 +- tests/src/Util/TemporalTest.php | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/Util/Temporal.php b/src/Util/Temporal.php index c3f744ba63..6a0cd65997 100644 --- a/src/Util/Temporal.php +++ b/src/Util/Temporal.php @@ -361,7 +361,7 @@ class Temporal foreach ($a as $secs => $str) { $d = $etime / $secs; if ($d >= 1) { - $r = round($d); + $r = floor($d); // translators - e.g. 22 hours ago, 1 minute ago if($isfuture){ $format = DI::l10n()->t('in %1$d %2$s'); diff --git a/tests/src/Util/TemporalTest.php b/tests/src/Util/TemporalTest.php index fe0429af81..4181a51fa3 100644 --- a/tests/src/Util/TemporalTest.php +++ b/tests/src/Util/TemporalTest.php @@ -60,5 +60,23 @@ class TemporalTest extends TestCase Temporal::getRelativeDate($minuteAgo, true, $clock), sprintf($format, 1, DI::l10n()->t('minute')) ); + + $almostAnHourAgoInterval = new \DateInterval('PT59M59S'); + $almostAnHourAgoInterval->invert = 1; + $almostAnHourAgo = (clone $clock->now())->add($almostAnHourAgoInterval); + + self::assertEquals( + Temporal::getRelativeDate($almostAnHourAgo->format(DateTimeFormat::MYSQL), true, $clock), + sprintf($format, 59, DI::l10n()->t('minutes')) + ); + + $anHourAgoInterval = new \DateInterval('PT1H'); + $anHourAgoInterval->invert = 1; + $anHourAgo = (clone $clock->now())->add($anHourAgoInterval); + + self::assertEquals( + Temporal::getRelativeDate($anHourAgo->format(DateTimeFormat::MYSQL), true, $clock), + sprintf($format, 1, DI::l10n()->t('hour')) + ); } }