Работа с датой и временем в Laravel и PHP с помощью Carbon
Доброго времени суток. В данной статье мы рассмотрим замечательный пакет Carbon, который позволяет нам работать с датой и временем в PHP. Данный пакет по умолчанию идет в составе Laravel. Основные функции Carbon:
- Работа с часовыми поясами
- Получение текущего времени
- Прибавление и вычитания даты (например, +2 дня или -3 недели)
- И др.
Интересно? Тогда приступаем.
Carbon – это пакет для работы со временем и датой в PHP. Официальный сайт Carbon. Документация по Carbon
Подключение Carbon
Так, как я рассматриваю работу со временем в Laravel с помощью Carbon. А Carbon по умолчанию идет в составе Laravel. Поэтому для начала его использования нам необходимо просто импортировать Carbon из пространства имен Carbon:
<?php use Carbon\Carbon;
Получение даты и времени
Получение текущей даты и времени
$date = Carbon::now();
Давайте посмотрим, что содержится в $date с помощью dd
Есть и второй способ получения текущей даты:
$current = new Carbon();
Получение текущей даты
$date = Carbon::today();
Посмотрим результат:
$date = Carbon::tomorrow();
Получение специфичной даты.
Например, мы хотим получить последнюю пятницу в этом месяце.
$date = Carbon::now(); $lastFriday = new Carbon('last friday of '.$date);
Давайте посмотрим результат:
Создание даты с четким контролем
Также мы можем создать дату из определенного количества аргументов:
Carbon::createFromDate($year, $month, $day, $tz);
Или время:
Carbon::createFromTime($hour, $minute, $second, $tz);
Или время и дату:
Carbon::create($year, $month, $day, $hour, $minute, $second, $tz);
И один маленький, но главный нюанс, если один из этих параметров передать как null, то будет подставлено текущее значение.
Манипулирование датой / временем
Carbon также позволяет нам легко манипулировать с датой и временем.
Добавляем 3 дня к текущей дате.
$current = Carbon::now(); $date = Carbon::now()->addDays(3);
Давайте посмотрим результат. В начале я выведу $current, а затем $date
$date = Carbon::now()->addDay();
Вычитаем один день
$date = Carbon::now()->subDay();
Вычитаем три дня
$date = Carbon::now()->subDays(3);
Добавляем 5 лет к текущей дате
$date = Carbon::now()->addYears(5);
Добавляем один год
$date = Carbon::now()->addYear();
Вычитаем один год
$date = Carbon::now()->subYear();
Вычитаем пять лет
$date = Carbon::now()->subYears(5);
Есть аналогичные функции с прибавлением и вычитанием месяцев
$date = Carbon::now()->addMonths(2); $date = Carbon::now()->addMonth(); $date = Carbon::now()->subMonths(2); $date = Carbon::now()->subMonth();
Аналогично с неделями (прибавление и вычитание недель)
$date = Carbon::now()->addWeeks(3); $date = Carbon::now()->addWeek(); $date = Carbon::now()->subWeeks(3); $date = Carbon::now()->subWeek(3);
Есть также методы для работы с часами, минутами и секундами.
Относительное время
Carbon содержит очень полезные и мощные методы отображения разницы времени. Например:
$current = Carbon::now(); $date = Carbon::now(); $date->addHours(10); echo $current->diffInHours($date, false);
Выведет 10. А следующий код выведет -10.
$current = Carbon::now(); $date = Carbon::now(); $date->addHours(10); echo $date ->diffInHours($current, false);
Также, есть методы для отображения разницы в минутах и днях
- diffInMinutes
- diffInDays
Существуют также специальные функции фильтрации diffInDaysFiltered (), diffInHoursFiltered () и diffFiltered (), чтобы помочь вам отфильтровать разницу по дням, часам или пользовательскому интервалу. Например, чтобы подсчитать выходные дни между двумя экземплярами. О которых вы можете прочитать в официальной документации.
Заключение.
Пакет Carbon позволяет нам существенно упростить и ускорить работу со временем и датами. Пакет обладает широкими возможностями получения и манипулирования датами.
kak iz poluchennih dannih vitachit ‘den’ ili ‘god’ ili ‘mecac’
А какие данные вы получили?