Класс Date
Класс Date из пространства имён Illuminate\Support
предоставляет удобный интерфейс для работы с датами и временем
в Laravel. Он наследует функциональность библиотеки Carbon
и добавляет дополнительный синтаксический сахар для использования
в приложениях Laravel. Класс позволяет создавать объекты дат,
форматировать их, выполнять математические операции (добавление
или вычитание дней, месяцев, лет), сравнивать даты между собой
и многое другое.
Создание объекта Date
Существует несколько способов создания объекта Date.
Наиболее простой - использовать конструктор без параметров
для получения текущей даты и времени:
<?php
use Illuminate\Support\Date;
$res = new Date();
echo $res->toDateString();
?>
Результат выполнения кода:
"2026-09-07"
Также можно создать объект из строки с датой:
<?php
use Illuminate\Support\Date;
$res = new Date('2025-12-31');
echo $res->toDateString();
?>
Результат выполнения кода:
"2025-12-31"
Метод parse
Метод parse позволяет создавать объект Date
из строки с датой в различных форматах. Этот метод является
более гибким, чем использование конструктора, так как он
автоматически определяет формат входной строки:
<?php
use Illuminate\Support\Date;
$res = Date::parse('2025-05-15 14:30:00');
echo $res->format('d.m.Y H:i');
?>
Результат выполнения кода:
"15.05.2025 14:30"
Метод parse также умеет обрабатывать человекочитаемые
форматы дат:
<?php
use Illuminate\Support\Date;
$res = Date::parse('next monday');
echo $res->toDateString();
?>
Результат выполнения кода:
"2026-09-14"
Метод createFromFormat
Метод createFromFormat создаёт объект Date
из строки с явным указанием формата. Это полезно, когда
вы работаете с датами в нестандартных форматах:
<?php
use Illuminate\Support\Date;
$res = Date::createFromFormat('d/m/Y', '25/12/2025');
echo $res->toDateString();
?>
Результат выполнения кода:
"2025-12-25"
Форматирование даты
Для форматирования даты используется метод format,
который принимает строку с форматом, аналогичную функции
date в PHP:
<?php
use Illuminate\Support\Date;
$res = Date::parse('2025-07-20 09:15:00');
echo $res->format('l, j F Y H:i:s');
?>
Результат выполнения кода:
"Sunday, 20 July 2025 09:15:00"
Для вывода даты в стандартных форматах существуют специальные методы:
<?php
use Illuminate\Support\Date;
$res = Date::now();
echo $res->toDateString() . "\n";
echo $res->toDateTimeString() . "\n";
echo $res->toTimeString();
?>
Результат выполнения кода:
"2026-09-07"
"2026-09-07 17:45:30"
"17:45:30"
Манипуляции с датой
Класс Date предоставляет множество методов для
изменения даты. Рассмотрим добавление и вычитание дней:
<?php
use Illuminate\Support\Date;
$res = Date::parse('2025-01-01');
echo $res->addDays(10)->toDateString() . "\n";
echo $res->subDays(5)->toDateString();
?>
Результат выполнения кода:
"2025-01-11"
"2025-01-06"
Также доступны операции с месяцами и годами:
<?php
use Illuminate\Support\Date;
$res = Date::parse('2025-06-15');
echo $res->addMonths(3)->toDateString() . "\n";
echo $res->subYears(1)->toDateString();
?>
Результат выполнения кода:
"2025-09-15"
"2024-09-15"
Сравнение дат
Для сравнения дат используются методы isPast,
isFuture, isToday и другие:
<?php
use Illuminate\Support\Date;
$pastDate = Date::parse('2020-01-01');
$futureDate = Date::parse('2030-01-01');
$today = Date::today();
echo $pastDate->isPast() . "\n";
echo $futureDate->isFuture() . "\n";
echo $today->isToday();
?>
Результат выполнения кода:
"1"
"1"
"1"
Для сравнения двух дат между собой можно использовать
методы diffInDays, diffInMonths,
diffForHumans и другие:
<?php
use Illuminate\Support\Date;
$start = Date::parse('2025-01-01');
$end = Date::parse('2025-12-31');
echo $start->diffInDays($end) . "\n";
echo $start->diffForHumans($end);
?>
Результат выполнения кода:
"364"
"11 months before"