laravel-5-carbonCarbon 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