Tengo una aplicación donde mis usuarios pueden ingresar una cadena de formato para un objeto de fecha. Uso date-fns para formatear las fechas (con este formato ) y funciona perfectamente en la interfaz:
import { format } from "date-fns"; import { es } from "date-fns/locale"; const formatStr = "yyyy-MM-dd" // user defined format(date, formatStr, { locale: es }); // returns "2022-03-23"El problema es que ahora tengo que usar el mismo formato en php. Pensé que Carbon haría el trabajo, pero en realidad usa el estilo de formato de fecha php .
$formatStr = "yyyy-MM-dd"; // same value as before Carbon::parse($date)->format($formatStr) // returns "22222222-MarMar-2323"¿Hay alguna forma de "traducir" el estilo de formato date-fns a Carbon, o debería usar otra biblioteca?
Carbon tiene un isoFormat() que acepta una cadena de estilo momentjs. De su documentación :
->isoFormat(cadena $formato): la cadena usa el formato ISO en lugar del formato específico de PHP y usa traducciones internas en lugar de los paquetes de idioma que necesita instalar en cada máquina donde implementa su aplicación. El método isoFormat es compatible con el método de formato momentjs, lo que significa que puede usar las mismas cadenas de formato que puede haber usado en moment desde front-end o node.js. Aquí hay unos ejemplos:
$date = Carbon::parse('2018-06-15 17:34:15.984512', 'UTC'); echo $date->isoFormat('MMMM Do YYYY, h:mm:ss a'); // June 15th 2018, 5:34:15 pm echo "\n"; echo $date->isoFormat('dddd'); // Friday echo "\n"; echo $date->isoFormat('MMM Do YY'); // Jun 15th 18 echo "\n"; echo $date->isoFormat('YYYY [escaped] YYYY'); // 2018 escaped 2018Entonces deberías poder usar
Carbon::parse($date)->isoFormat($formatStr)