ghost
1 year ago
1 changed files with 61 additions and 0 deletions
@ -0,0 +1,61 @@
@@ -0,0 +1,61 @@
|
||||
<?php |
||||
|
||||
namespace App\Service; |
||||
|
||||
use Symfony\Contracts\Translation\TranslatorInterface; |
||||
|
||||
class TimeService |
||||
{ |
||||
private TranslatorInterface $translator; |
||||
|
||||
public function __construct(TranslatorInterface $translator) |
||||
{ |
||||
$this->translator = $translator; |
||||
} |
||||
|
||||
public function ago(int $time): string |
||||
{ |
||||
$diff = time() - $time; |
||||
|
||||
if ($diff < 1) |
||||
{ |
||||
return self::$translator->trans('now'); |
||||
} |
||||
|
||||
$values = |
||||
[ |
||||
365 * 24 * 60 * 60 => $this->translator->trans('year'), |
||||
30 * 24 * 60 * 60 => $this->translator->trans('month'), |
||||
24 * 60 * 60 => $this->translator->trans('day'), |
||||
60 * 60 => $this->translator->trans('hour'), |
||||
60 => $this->translator->trans('minute'), |
||||
1 => $this->translator->trans('second') |
||||
]; |
||||
|
||||
$plural = [ |
||||
$this->translator->trans('year') => $this->translator->trans('years'), |
||||
$this->translator->trans('month') => $this->translator->trans('months'), |
||||
$this->translator->trans('day') => $this->translator->trans('days'), |
||||
$this->translator->trans('hour') => $this->translator->trans('hours'), |
||||
$this->translator->trans('minute') => $this->translator->trans('minutes'), |
||||
$this->translator->trans('second') => $this->translator->trans('seconds') |
||||
]; |
||||
|
||||
foreach ($values as $key => $value) |
||||
{ |
||||
$result = $diff / $key; |
||||
|
||||
if ($result >= 1) |
||||
{ |
||||
$round = round($result); |
||||
|
||||
return sprintf( |
||||
'%s %s %s', |
||||
$round, |
||||
$round > 1 ? $plural[$value] : $value, |
||||
$this->translator->trans('ago') |
||||
); |
||||
} |
||||
} |
||||
} |
||||
} |
Loading…
Reference in new issue