X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FUtil%2FTemporal.php;h=acafb66ab60538949a9b0cacd2540b19b2bc7382;hb=0a45bdd3b71ec0f8744abb3830858a91a4bca146;hp=24d7d7e23d31837cf489c8316fc8feb113350023;hpb=5c332af844eeace5d0fb61314dd29c22e6e465fd;p=friendica.git diff --git a/src/Util/Temporal.php b/src/Util/Temporal.php index 24d7d7e23d..acafb66ab6 100644 --- a/src/Util/Temporal.php +++ b/src/Util/Temporal.php @@ -1,6 +1,6 @@ %1$d %2$s ago, e.g. 22 hours ago, 1 minute ago + * @param string|null $posted_date MySQL-formatted date string (YYYY-MM-DD HH:MM:SS) + * @param bool $compare_time Compare date (false) or date and time (true). "true" is default. + * @param ClockInterface|null $clock + * %1$d %2$s ago, e.g. 22 hours ago, 1 minute ago * * @return string with relative date */ - public static function getRelativeDate(string $posted_date = null, string $format = null, bool $compare_time = true): string + public static function getRelativeDate(string $posted_date = null, bool $compare_time = true, ClockInterface $clock = null): string { if (empty($posted_date) || $posted_date <= DBA::NULL_DATETIME) { return DI::l10n()->t('never'); } + $clock = $clock ?? new SystemClock(); + $localtime = $posted_date . ' UTC'; $abs = strtotime($localtime); @@ -325,8 +329,8 @@ class Temporal return DI::l10n()->t('never'); } - $now = time(); - + $now = $clock->now()->getTimestamp(); + if (!$compare_time) { $now = mktime(0, 0, 0, date('m', $now), date('d', $now), date('Y', $now)); $abs = mktime(0, 0, 0, date('m', $abs), date('d', $abs), date('Y', $abs)); @@ -335,7 +339,7 @@ class Temporal $isfuture = false; $etime = $now - $abs; - if ($etime < 1 && $etime >= 0) { + if ($etime >= 0 && $etime < 1) { return $compare_time ? DI::l10n()->t('less than a second ago') : DI::l10n()->t('today'); } @@ -357,15 +361,13 @@ 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 (!$format) { - if($isfuture){ - $format = DI::l10n()->t('in %1$d %2$s'); - } - else { - $format = DI::l10n()->t('%1$d %2$s ago'); - } + if($isfuture){ + $format = DI::l10n()->t('in %1$d %2$s'); + } + else { + $format = DI::l10n()->t('%1$d %2$s ago'); } return sprintf($format, $r, (($r == 1) ? $str[0] : $str[1]));