Carbon — простой и функциональный инструмент PHP для работы с датой и временем

Carbon - простой и функциональный инструмент PHP для работы с датой и временем

От автора: так сложилось, что дата и время повсеместно используются практически на каждом сайте в интернете, причем не просто для отображения на экран, дата и время, как правило, входят в состав различных логических преобразований для формирования контента. Поэтому в данном уроке мы с Вами рассмотрим замечательный инструмент по работе с вышеуказанной информацией под названием Carbon.

скачать исходники

Как Вы знаете, в структуре языка PHP, есть довольно функциональный класс, для работы с датой и временем, под названием DateTime. Который отлично справляется с типовыми задачами, но порой его функционала все же не достаточно. То есть хотелось бы иметь в распоряжении больше методов, которые добавляют удобства и легкости в работе с датой и временем. Как раз эту проблему и решает расширение под названием Carbon. По сути – это обычный класс, который расширяет функционал вышеуказанного класса, добавляя к нему множество интересных методов по созданию и преобразованию даты и времени. Официальный сайт, указанного инструмента Вы найдет по ссылке.

Для установки библиотеки с использованием инструмента Composer, достаточно выполнить команду:

composer require nesbot/carbon

И, конечно же, подключить сгенерированный файл.

require 'vendor/autoload.php';

Обратите внимание, что класс библиотеки, описан в собственном пространстве имен, поэтому желательно его так же подключить к Вашему проекту.

use Carbon\Carbon; 

На этом, установка завершена, и Вы можете использовать ресурсы библиотеки. Собственно, в структуре Carbon можно выделить несколько групп методов по работе, с датой и временем: методы по созданию объекта с требуемой датой, методы по отображению даты на экран, методы сравнения и методы по изменению даты.

Методы по созданию объекта с требуемой датой

Для создания объекта, можно воспользоваться, достаточно стандартным выражением:

$carbon = new Carbon(); 

Таким образом, будет создан объект, содержащий текущую дату и время. Так же можно воспользоваться, одним из трех методов, название которых само по себе говорит, какая дата будет использоваться.

//Сегодня
$carbon = Carbon::today();
//Завтра
$carbon = Carbon::tomorrow();
//Вчера
$carbon = Carbon::yesterday();

Но при этом, время будет выбрано как 00:00:00. Далее, методы по формированию объекта Carbon используя определенную дату. По сути каждый из них, принимает в качестве аргументов, определенные части даты или времени.

//Из определенной даты
$carbon = Carbon::createFromDate(2013, 12, 25);
//Из определенного времени
$carbon = Carbon::createFromTime(12, 05, 30);
//Из строки времени
$carbon = Carbon::createFromTimeString("12:23:05");
//Из определенной даты в виде частей
$carbon = Carbon::create(2013, 05, 10, 12, 30, 25);
//Из определенного формата
$carbon = Carbon::createFromFormat('Y-m-d H', '1995-05-21 22');

Методы по отображению даты и времени на экран

В самом простейшем случае для отображения даты и времени, можно воспользоваться методом toDateTimeString (), объекта Carbon или просто вывести на экран объект.

echo $carbon->toDateTimeString(); echo $carbon; 

Для отображения информации в требуемом формате, можно использовать следующие методы:

echo $carbon->toDateString();
//Форматированный вывод - формат определяется первым аргуметом
echo $carbon->format('Y-m-d\TH:i:s.uP T'); echo $dt->toFormattedDateString(); echo $dt->toTimeString(); echo $dt->toDayDateTimeString(); 

Для отображения даты в интересующей локализации, необходимо ее указать и затем использовать метод formatLocalized(). При этом следует учесть, что кириллические символы, будут возвращены в кодировке cp-1251, а значит, если используется общая кодировка UTF8, потребуется конвертация.

setlocale(LC_TIME, 'Russian');
echo iconv("windows-1251","utf-8", $carbon->formatLocalized('%A %d %B %Y'));

Для отображения, определенной части даты, так же можно воспользоваться одним из представленных свойств, название которых само за себя говорит о их назначении.

var_dump($dt->year); var_dump($dt->month); var_dump($dt->day); var_dump($dt->hour); var_dump($dt->minute); var_dump($dt->second); var_dump($dt->micro); var_dump($dt->dayOfWeek); var_dump($dt->dayOfWeekIso); var_dump($dt->dayOfYear); var_dump($dt->weekNumberInMonth); var_dump($dt->weekOfMonth); var_dump($dt->weekOfYear); var_dump($dt->daysInMonth); var_dump($dt->timestamp);

При этом, если это свойства, то их значения Вы можете изменить, тем самым изменив значение даты всего объекта в целом.

Методы сравнения дат

Помимо этого, очень часто необходимо сравнивать даты между собой и для этого есть отдельная группа методов.

//Равенство
var_dump($first->eq($second)); //Не Равенство
var_dump($first->ne($second));
//Больше
var_dump($first->gt($second));
//Больше равно
var_dump($first->gte($second));
//Меньше
var_dump($first->lt($second));
//Меньше равно
var_dump($first->lte($second));
//Проверка входит ли дата в диапазон
var_dump(Carbon::create(2012, 9, 5, 3)->between($first, $second));

Методы по преобразованию даты и времени

Ну, и наконец группа методов по изменению даты и времени. Хотя мы уже знаем с Вами как изменить определенную часть времени — для этого достаточно изменить значение соответствующего свойства, но все же методы добавляют некую гибкость к библиотеке в целом.

//Столетия
echo $carbon->addCenturies(5); echo $carbon->addCentury(); echo $carbon->subCentury(); echo $carbon->subCenturies(5); //Года
echo $carbon->addYears(5); echo $carbon->addYear(); echo $carbon->subYear(); echo $carbon->subYears(5); //Четверти
echo $carbon->addQuarters(2); echo $carbon->addQuarter(); echo $carbon->subQuarter(); echo $carbon->subQuarters(2); //Месяцы
echo $carbon->addMonths(60); echo $carbon->addMonth(); echo $carbon->subMonth(); echo $carbon->subMonths(60); //Дни
echo $carbon->addDays(29); echo $carbon->addDay(); echo $carbon->subDay(); echo $carbon->subDays(29); //Дни недели
echo $carbon->addWeekdays(4); echo $carbon->addWeekday(); echo $carbon->subWeekday(); echo $carbon->subWeekdays(4); //Недели
echo $carbon->addWeeks(3); echo $carbon->addWeek(); echo $carbon->subWeek(); echo $carbon->subWeeks(3); //Часы
echo $carbon->addHours(24); echo $carbon->addHour(); echo $carbon->subHour(); echo $carbon->subHours(24); //Минуты
echo $carbon->addMinutes(61); echo $carbon->addMinute(); echo $carbon->subMinute(); echo $carbon->subMinutes(61); //Секунды
echo $carbon->addSeconds(61); echo $carbon->addSecond(); echo $carbon->subSecond(); echo $carbon->subSeconds(61);

Обратите внимание, что методы, в имени которых присутствует префикс add, добавляют определенную часть даты. А методы с префиксом sub, наоборот – вычитают.

Собственно на этом данный урок завершён. В текущей статье, представлены наиболее часто используемые методы, более широко, тема инструмента Carbon раскрыта в видео версии урока. Всего Вам доброго и удачного кодирования!!!