Метод diffForHumans
Метод diffForHumans класса Carbon преобразует разницу между двумя датами в строку, понятную человеку. Он автоматически выбирает подходящую единицу измерения (секунды, минуты, часы, дни, месяцы, годы) и возвращает фразы вида "5 минут назад", "через 2 дня", "только что" и т.д. Метод часто используется для отображения времени создания или обновления записей в пользовательском интерфейсе.
Метод вызывается на экземпляре Carbon и может принимать три параметра: первый - количество единиц для сингуляризации (по умолчанию false), второй - длина текста (по умолчанию false), третий - флаг использования относительных фраз (по умолчанию false). Без параметров метод использует стандартные настройки локализации.
Синтаксис
<?php
use CarbonCarbon;
$date = Carbon::now();
$result = $date->diffForHumans();
?>
Пример
Получим разницу между текущим моментом и датой в прошлом:
<?php
use CarbonCarbon;
$now = Carbon::now();
$past = Carbon::now()->subHours(3);
$res = $past->diffForHumans();
echo $res;
?>
Результат выполнения кода:
"3 hours ago"
Пример
Сравним две даты, одна из которых находится в будущем:
<?php
use CarbonCarbon;
$now = Carbon::now();
$future = Carbon::now()->addDays(5);
$res = $future->diffForHumans();
echo $res;
?>
Результат выполнения кода:
"5 days from now"
Пример
Используем параметр для короткого формата вывода:
<?php
use CarbonCarbon;
$now = Carbon::now();
$past = Carbon::now()->subHours(3);
$res = $past->diffForHumans(null, true);
echo $res;
?>
Результат выполнения кода:
"3h"
Пример
Сравним две даты с высокой точностью:
<?php
use CarbonCarbon;
$now = Carbon::now();
$past = Carbon::now()->subMinutes(45);
$res = $past->diffForHumans();
echo $res;
?>
Результат выполнения кода:
"45 minutes ago"
Пример
Используем параметр для сингуляризации (полная форма):
<?php
use CarbonCarbon;
$now = Carbon::now();
$past = Carbon::now()->subHours(1);
$res = $past->diffForHumans(null, false, true);
echo $res;
?>
Результат выполнения кода:
"1 hour ago"
Пример
Получим разницу между двумя произвольными датами:
<?php
use CarbonCarbon;
$date1 = Carbon::parse('2023-01-15');
$date2 = Carbon::parse('2023-01-20');
$res = $date1->diffForHumans($date2);
echo $res;
?>
Результат выполнения кода:
"5 days before"
Смотрите также
-
метод
format,
который форматирует дату по заданному шаблону -
метод
toDateTimeString,
который преобразует дату в стандартный строковый формат -
метод
toDateString,
который возвращает только дату без времени -
метод
isPast,
который проверяет, является ли дата прошедшей