От автора: так сложилось, что дата и время повсеместно используются практически на каждом сайте в интернете, причем не просто для отображения на экран, дата и время, как правило, входят в состав различных логических преобразований для формирования контента. Поэтому в данном уроке мы с Вами рассмотрим замечательный инструмент по работе с вышеуказанной информацией под названием Carbon.
Как Вы знаете, в структуре языка PHP, есть довольно функциональный класс, для работы с датой и временем, под названием DateTime. Который отлично справляется с типовыми задачами, но порой его функционала все же не достаточно. То есть хотелось бы иметь в распоряжении больше методов, которые добавляют удобства и легкости в работе с датой и временем. Как раз эту проблему и решает расширение под названием Carbon. По сути – это обычный класс, который расширяет функционал вышеуказанного класса, добавляя к нему множество интересных методов по созданию и преобразованию даты и времени. Официальный сайт, указанного инструмента Вы найдет по ссылке.
Для установки библиотеки с использованием инструмента Composer, достаточно выполнить команду:
1 |
composer require nesbot/carbon |
И, конечно же, подключить сгенерированный файл.
1 |
require 'vendor/autoload.php'; |
Обратите внимание, что класс библиотеки, описан в собственном пространстве имен, поэтому желательно его так же подключить к Вашему проекту.
1 |
use Carbon\Carbon; |
На этом, установка завершена, и Вы можете использовать ресурсы библиотеки. Собственно, в структуре Carbon можно выделить несколько групп методов по работе, с датой и временем: методы по созданию объекта с требуемой датой, методы по отображению даты на экран, методы сравнения и методы по изменению даты.
Методы по созданию объекта с требуемой датой
Для создания объекта, можно воспользоваться, достаточно стандартным выражением:
1 |
$carbon = new Carbon(); |
Таким образом, будет создан объект, содержащий текущую дату и время. Так же можно воспользоваться, одним из трех методов, название которых само по себе говорит, какая дата будет использоваться.
1 2 3 4 5 6 |
//Сегодня $carbon = Carbon::today(); //Завтра $carbon = Carbon::tomorrow(); //Вчера $carbon = Carbon::yesterday(); |
Но при этом, время будет выбрано как 00:00:00. Далее, методы по формированию объекта Carbon используя определенную дату. По сути каждый из них, принимает в качестве аргументов, определенные части даты или времени.
1 2 3 4 5 6 7 8 9 10 |
//Из определенной даты $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 или просто вывести на экран объект.
1 2 |
echo $carbon->toDateTimeString(); echo $carbon; |
Для отображения информации в требуемом формате, можно использовать следующие методы:
1 2 3 4 5 6 7 |
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, потребуется конвертация.
1 2 |
setlocale(LC_TIME, 'Russian'); echo iconv("windows-1251","utf-8", $carbon->formatLocalized('%A %d %B %Y')); |
Для отображения, определенной части даты, так же можно воспользоваться одним из представленных свойств, название которых само за себя говорит о их назначении.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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); |
При этом, если это свойства, то их значения Вы можете изменить, тем самым изменив значение даты всего объекта в целом.
Методы сравнения дат
Помимо этого, очень часто необходимо сравнивать даты между собой и для этого есть отдельная группа методов.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
//Равенство 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)); |
Методы по преобразованию даты и времени
Ну, и наконец группа методов по изменению даты и времени. Хотя мы уже знаем с Вами как изменить определенную часть времени — для этого достаточно изменить значение соответствующего свойства, но все же методы добавляют некую гибкость к библиотеке в целом.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
//Столетия 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 раскрыта в видео версии урока. Всего Вам доброго и удачного кодирования!!!