Manipulación de fechas con Laravel y librería Carbon
Uno de mis primeros artículos aquí en Codmind fue la construcción de consultas por estampas de tiempo utilizando Eloquent en Laravel mismo que espero haya sido de utilidad para mejorar tus tus desarrollos. Sin embargo, dentro del mundo del desarrollo Backend, trabajar correctamente con fechas es un tema que pareciera sencillo, pero es bastante extenso; Registros, pagos, fechas limite, reportes, cronología, duración de suscripciones, son algunas de muchas tareas que dependen de un correcto manejo de la calendarización en tus fechas.
Dicho esto en esta ocasión me gustaría hablar un poco sobre Carbon, un paquete incluido en tu instalación de Laravel que es una maravilla a la hora de manipular fechas, ya que nos permite, entre otras cosas, realizar cálculos precisos de manera sencilla como te mostrare a continuación.
Recordemos que este paquete viene incluido con nuestra instalación del Framework. Por lo que dentro de nuestro controlador y/o modelo solo debemos hacer uso de este. Existen 2 maneras de hacerlo la primera es crear una instancia de carbón así:
$carbon = new \Carbon\Carbon();
Y la segunda y hasta cierto punto mas practica es hacerlo definiéndolo en la cabecera de nuestro controlador y/o modelo:
use Carbon\Carbon;
¡Y listo! Ya tenemos lo necesario para manipular fechas. De aquí en adelante todo depende de tus necesidades, a continuación te dejare algunos métodos muy útiles que te ayudaran a desde ya hacer uso de la librería, sin embargo Carbon es bastante amplio, por lo que si lo que buscas no se encuentra aquí puedes darle un vistazo a su documentación oficial que detalla mas funciones de las que te compartiré. Sin mas preámbulo comencemos:
Para empezar, necesitamos tener una fecha la cual manipular, esto lo podemos hacer de 3 maneras distintas por ejemplo:
Obtener fecha actual: el método now(), obtiene por defecto la fecha actual del sistema (Servidor).
$date = Carbon::now();
A través de una consulta: Por defecto, los timestamps retornados tras una consulta en Laravel, vienen formateados para ser manipulados con Carbon, por lo que tal como se muestra a continuación solo basta una consulta para empezar a manipular la cadena.
$date = User::find($id)->created_at;
Pasar un string por el método parse(): Esto es bastante común, por ejemplo, cuando construyes tu backend, generalmente recibes las fechas como cadenas de texto (provenientes de inputs), por lo que para manipularlas (con Carbon por ejemplo), debes dar el formato que requiere la librería por ejemplo:
$date = Carbon::parse('2021-03-25');
Ahora que tenemos nuestra fecha lo siguiente es manipularla, para esto te mostrare algunas funciones bastante útiles:
Dar formato a fecha:
$date = $date->format('Y-m-d');
Mostrar solo la fecha
$date->toDateString();
Mostrar solo la hora (Aplica para formatos que almacenan fecha y hora)
$date->toTimeString();
Mostrar fecha y hora:
$date->toDateTimeString();
Sumar fechas
$endDate = $date->addYear();
$endDate = $date->addYears(5);
$endDate = $date->addMonth();
$endDate = $date->addMonths(5);
$endDate = $date->addDay();
$endDate = $date->addDay(5);
Restar fechas
$endDate = $date->subYear();
$endDate = $date->subYears(5);
$endDate = $date->subMonth();
$endDate = $date->subMonths(5);
$endDate = $date->subDay();
$endDate = $date->subDay(5);
Obtener edad a partir de tu fecha de nacimiento
$date = Carbon::createFromDate(1970,19,12)->age;
Conocer que día será mañana
$date = new Carbon('tomorrow');
Conocer que día fue ayer
$date = new Carbon('yesterday’);
Conocer que fecha será el siguiente día de la semana (Lunes en este caso)
$date = new Carbon('next monday');
Conocer que fecha fue cierto día de la semana (Sábado en este caso)
$date = new Carbon('last saturday');
Conclusiones:
Como puedes darte cuenta la librería Carbon es una alternativa sencilla, robusta y bastante útil, planeo en algún momento hacer una segunda parte de este articulo ya que la librería es bastante amplia y hay bastante mas material por explorar, por el momento ya tienes disponible los que posiblemente, son los métodos mas comunes, dejo mis redes sociales para resolver cualquier duda que tengas respecto al tema, no sin antes recordarte que en Codmind estamos de manteles largos ya que ¡Al fin tenemos el curso de PHP Core Essentials!, mismo que puedes ver aquí y que te ayudara bastante a dar tus primeros pasos en el lenguaje mas utilizado de la web. Sin mas de momento me despido y nos vemos la próxima semana en otro post. Saludos!!!
Referencias
https://carbon.nesbot.com/docs/