Carbon , El package que extiende la clase PHP DateTime
Trabajar con fechas y tiempo en PHP puede ser complicado. Tenemos que lidiar con strtotime, problemas de formato, cálculos varios y ma_s._
Es aquí donde entra Carbon creado por Brian Nesbit
Algunas de sus funcionalidades especificas para tratar con fechas son:
Si usas Laravel , Carbon esta incluido de serie en el Framework. Pero no tan rápido amigo, existen dos versiones de él: Carbon\Carbon y IIluminate\Support\Carbon.
Según comentan usuarios experimentados, el uso de cualquiera de las dos versiones es seguro. Sin embargo muchos se decantan por Carbon\Carbon debido a que es mas sencillo, claro cuando se importa.
La versión Ilumínate se encuentra forrada alrededor de la librería oficial de carbón, para su compatibilidad total, tanto forward como backward.
Como bien sabrás Laravel ofrece varios atajos para las fechas y horas. Normalmente usamos now() y today(). El uso de now() para recuperar una marca de tiempo para un usuario QUE NO esta en la zona horaria puede generar resultados no deseados. Para solucionar esto debemos almacenar la zona horaria local de cada usuario, realizar la conversión horaria y registrar la marca de tiempo en formato UTC para cada usuario
Cada desarrollador necesitará calcular los límites de semana / mes / año y sus fechas de inicio y finalización. Corbon lo hace mas fácil.
Carbon ofrece una forma ordenada de construir objetos de fecha/hora. Uno de ellos es el constructor de cadenas fluidas que nos permite utilizar en ingles para construir tu objeto
use Carbon\Carbon;
//today=2022-05-07
//returns UTC DateTime object
// chain toDatateString() to get only the date part
Carbon : : make ('first day of this month') //2022-05-01
Carbon : : make ('last day of this month') //2022-05-31
Otra aplicación muy interesante es la de obtener el total de segundos en un intervalo de cadena a través de Carbon interval
use Carbon\CarbonInterval;
// Several ways to initialize the interval:
CarbonInterval::fromString('1h30m')->total('minutes');
CarbonInterval::make('1h30m')->total('minutes');
CarbonInterval::make('1h30m')->totalMinutes;
Como vemos Carbon es una herramienta muy poderosa y completa