Estoy usando Laravel 5.1
Hace unos días usé protected $dates = ['license_expire']
en mi modelo para convertir la fecha de la cadena en instancias de Carbon. En HTML, el valor predeterminado en el formulario de creación para la fecha era Carbon\Carbon::now()->format('Y-m-d')
Para mostrar la alerta en la página de inicio, utilicé <p>Licence Expired: <b>{{ $employee->license_expire < Carbon\Carbon::now()?'License has expired':$employee->license_expire->diffForHumans() }}</b></p>
Hasta entonces, el método diffForHumans() funciona bien.
Pero en ese caso, el valor predeterminado del formulario de edición también era la fecha de hoy sin importar lo que hubiera en la base de datos (estoy usando un formulario parcial). Para resolverlo, cambio el valor predeterminado en HTML que era NUll. Y agregue otro método en mi modelo para mostrar la fecha actual en el formulario de creación.
public function getLicenseExpireAttribute($date)
{
return Carbon::parse($date)->format('Y-m-d');
}
Después de eso, cuando voy a la página de inicio, tengo un FatalErrorException
que dice Call to a member function diffForHumans() on string
Cuando compruebo la fecha con dd($employee->license_expire)
vuelve a ser STRING.
¿Alguien puede decirme cómo puedo convertir la cadena a Carbon en esta situación?
o
¿Hacer que la fecha predeterminada de mi formulario de creación sea la fecha de hoy, la fecha del formulario de edición de la base de datos y puedo usar diffForHumans() para mostrar la alerta en la página de inicio?
Rwd
Casi estabas allí.
Remover protected $dates = ['license_expire']
y luego cambia tu LicenseExpire
acceso a:
public function getLicenseExpireAttribute($date)
{
return Carbon::parse($date);
}
De esta forma devolverá un Carbon
ejemplo, pase lo que pase. Así que para tu formulario solo tendrías $employee->license_expire->format('Y-m-d')
(o cualquier formato que se requiera) y diffForHumans()
debería funcionar en su página de inicio también.
¡Espero que esto ayude!
-
¡sí! Eso ayudo. Hice exactamente lo que dijiste. funciona perfectamente como deseo.
– smartrahat
14/09/2015 a las 14:54
¿Por qué no intentas usar lo siguiente?
$dateTimeString = $aDateString." ".$aTimeString;
$dueDateTime = Carbon::createFromFormat('Y-m-d H:i:s', $dateTimeString, 'Europe/London');
$filtro[‘dateOfService’]=’06.2021′;
$d1 = Carbon::createFromFormat('m.Y', $filter['dateOfService'], 'Europe/Warsaw')->format('m.Y');
Prueba esto
$date = Carbon::parse(date_format($youttimestring,'d/m/Y H:i:s'));
echo $date;