Преобразовать строку в углерод
Я использую Laravel 5.1
Несколько дней назад я использовал protected $dates = ['license_expire']
в своей модели для преобразования даты строки в экземпляры углерода. В HTML значение по умолчанию в форме создания для даты было Carbon\Carbon::now()->format('Y-m-d')
Для отображения предупреждения на домашней странице я использовал <p>Licence Expired: <b>{{ $employee->license_expire < Carbon\Carbon::now()?'License has expired':$employee->license_expire->diffForHumans() }}</b></p>
До тех пор метод diffForHumans() работает нормально.
Но в этом случае значением по умолчанию для формы редактирования также была сегодняшняя дата, независимо от того, что было в базе данных (я использую частичную форму). Чтобы решить эту проблему, я изменяю значение по умолчанию в HTML был равен нулю. И добавьте еще один метод в мою модель, чтобы отобразить текущую дату в форме создания.
public function getLicenseExpireAttribute($date)
{
return Carbon::parse($date)->format('Y-m-d');
}
После этого, когда я захожу на домашнюю страницу, у меня есть FatalErrorException
, в котором говорится Call to a member function diffForHumans() on string
Когда я проверяю дату с помощью dd($employee->license_expire)
, она снова становится СТРОКОЙ.
Может ли кто-нибудь сказать мне, как я могу преобразовать строку в углерод в этой ситуации?
Или
Сделайте дату моей формы создания по умолчанию сегодняшней датой, датой редактирования формы из базы данных, и я могу использовать diffForHumans() для отображения оповещения в домашних условиях страница?
3 answers
Ты был почти на месте.
Удалить protected $dates = ['license_expire']
А затем измените свой LicenseExpire
мутатор на:
public function getLicenseExpireAttribute($date)
{
return Carbon::parse($date);
}
Таким образом, он вернет экземпляр Carbon
, несмотря ни на что.
Таким образом, для вашей формы у вас будет просто $employee->license_expire->format('Y-m-d')
(или любой другой требуемый формат), и diffForHumans()
также должно работать на вашей домашней странице.
Надеюсь, это поможет!
Почему бы не попробовать использовать следующее:
$dateTimeString = $aDateString." ".$aTimeString;
$dueDateTime = Carbon::createFromFormat('Y-m-d H:i:s', $dateTimeString, 'Europe/London');
Попробуйте это
$date = Carbon::parse(date_format($youttimestring,'d/m/Y H:i:s'));
echo $date;