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')) + ); } }