Carbon es un paquete que viene integrado en la versión 5 de laravel que nos permite crear y dar formato a fechas con unos sencillos métodos.
Este componente nos ofrece no solo la posibilidad de crear fechas sino también de hacer cálculos obteniendo como resultado fechas futuras o pasadas a un valor dado y un intervalo especificado.
Si deseas usar el componente fuera de Laravel o deseas instalarlo en Laravel 4 puedes usar composer
Instalacion de Carbon via Composer
desde artisan ejecutamos el comando
$ composer require nesbot/carbon
Tambien puedes hacerlo agregando la siguiente linea a composer.json
{ "require": { "nesbot/carbon": "~1.14" } }
y ejecutando por ultimo
$ composer update
Usando Carbon en los controladores
Puede ser implementado en cualquier controlador de la siguiente forma
$carbon = new \Carbon\Carbon(); $date = $carbon->now();
Una mejor practica es importar la clase en la cabecera del controlador y usar algo asi
use Carbon\Carbon; $date = Carbon::now();
Los dos ejemplos anteriores en cualquiera de los casos crearan un objeto de Carbon que contiene lo siguiente
Carbon {#157 ▼ +"date": "2015-05-07 13:08:50.000000" +"timezone_type": 3 +"timezone": "UTC" }
Pero si enviamos la variable a la vista y la imprimimos obtendremos el siguiente string
2015-05-07 13:11:14
Formato de fechas
Al crear un objeto de la clase Carbon, podremos manipularlo gracias a sus métodos para obtener el formato deseado, veamos algunos ejemplos de cómo hacerlo.
Podemos darle un formato personalizado
$date = Carbon::now(); $date = $date->format('d-m-Y');
esto imprime
07-05-2015
O se puede hacer algo mucho mas complejo como
$date = Carbon::now(); $date = $date->format('l jS \\of F Y h:i:s A');
con esto obtendremos
Thursday 7th of May 2015 01:17:56 PM
Existen otros formatos predefinidos que son de gran ayuda como los siguientes
$date = Carbon::now(); $date->toDateString(); // 1975-12-25 $date->toFormattedDateString(); // Dec 25, 1975 $date->toTimeString(); // 14:15:16 $date->toDateTimeString(); // 1975-12-25 14:15:16
Sumando y restando fechas
A mi parecer es una de las características más impresionantes del componente, con esto podemos calcular fechas futuras o pasadas. Supongamos que tenemos un sistema con un plan de suscripción anual y queremos calcular la fecha de vencimiento de la cuenta al momento de registro , lo hacemos de la siguiente manera.
$date = Carbon::now(); //2015-01-01 00:00:00 $endDate = $date->addYear(); //2016-01-01 00:00:00
Con esto sumamos un año a la fecha dada, en caso de que queramos agregar más de un año podemos escribir
$endDate = $date->addYears(4); //2019-01-01 00:00:00
Si queremos por el contrario restar en lugar de sumar contamos con los siguientes métodos
$endDate = $date->subYear(); //2014-01-01 00:00:00 $endDate = $date->subYears(4); //2011-01-01 00:00:00
Pero qué ocurre cuando queremos sumar o restar meses, dias, minutos, pues bien, Carbon ofrece la posibilidad de trabajar todas estas posibilidades usando por ejemplo
add___() o sub___()
y podemos substituir con Day, Week, Month, Year, Hour, Minute, Second… Al final del post podrán encontrar el enlace a la documentación oficial.
Cálculo de edad
Es muy sencillo, solo debemos indicar cual es la fecha de nacimiento y obtendremos un valor con la edad
$date = Carbon::createFromDate(1970,19,12)->age; // 43
Algunos métodos útiles
//fecha actual $date = Carbon::now(); //dia de mañana $date = new Carbon('tomorrow'); //dia de ayer $date = new Carbon('yesterday’); //siguiente lunes $date = new Carbon('next monday'); //sábado pasado $date = new Carbon('last saturday');
Estos son algunas de las funciones más básicas de Carbon, si deseas conocer mucho más sobre este componente no olvides visitar la documentación oficial y tambien puedes ver el proyecto de Carbon en GitHub
También te recomendamos ver:
Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.
Lección anterior Captcha en tus formularios con Laravel 5 Lección siguiente Tinker, la consola de comandos de Laravel