Я хочу изменить формат даты, полученный из базы данных. теперь у меня 2016-10-01. {{$user->from_date}}
Я хочу изменить формат dmy в laravel 5.3
{{ $user->from_date->format('d/m/Y')}}
Попробуй это:
date('d-m-Y', strtotime($user->from_date));
Он преобразует дату в d-m-Y
любой формат, который вы указали.
Примечание. Это общее решение, которое работает для php и любых его фреймворков. Для конкретного метода Laravel попробуйте решение, предоставленное Hamelraj .
from_date
столбец отображения .В Laravel используйте Carbon, это хорошо
{{ \Carbon\Carbon::parse($user->from_date)->format('d/m/Y')}}
источник
null
?parse(null)
него нулевое значение, оно будет преобразовано как текущая дата и времяВ вашем наборе модели:
protected $dates = ['name_field'];
после, по вашему мнению:
{{ $user->from_date->format('d/m/Y') }}
работает
источник
Call to a member function format() on null
Вы можете проверить
Date Mutators
: https://laravel.com/docs/5.3/eloquent-mutators#date-mutatorsВам нужно установить
User
столбец моделиfrom_date
в$dates
массиве, а затем вы можете изменить формат в$dateFormat
Другой вариант - также добавить этот метод в вашу
User
модель:public function getFromDateAttribute($value) { return \Carbon\Carbon::parse($value)->format('d-m-Y'); }
а затем в поле зрения, если вы запустите,
{{ $user->from_date }}
вы увидите формат, который вам нужен.источник
Простая в использовании дата в шаблоне лезвия, таким образом используйте Carbon
{{ \Carbon\Carbon::parse($user->from_date)->format('d/m/Y')}}
источник
Это можно сделать тремя способами:
1) Использование модели Laravel
$user = \App\User::find(1); $newDateFormat = $user->created_at->format('d/m/Y'); dd($newDateFormat);
2) Использование PHP strtotime
$user = \App\User::find(1); $newDateFormat2 = date('d/m/Y', strtotime($user->created_at)); dd($newDateFormat2);
3) Использование углерода
$user = \App\User::find(1); $newDateFormat3 = \Carbon\Carbon::parse($user->created_at)->format('d/m/Y'); dd($newDateFormat3);
источник
Метод первый:
Использование времени
strtotime()
до - лучший формат для изменения даты в заданном формате.strtotime()
- Синтаксический анализ любого текстового описания даты и времени на английском языке в метку времени UnixФункция ожидает получить строку, содержащую английский формат даты, и попытается преобразовать этот формат в метку времени Unix (количество секунд с 00:00:00 UTC 1 января 1970 года) относительно метки времени, указанной в now, или текущее время, если сейчас не указано.
Пример:
<?php $timestamp = strtotime( "February 26, 2007" ); print date('Y-m-d', $timestamp ); ?>
Выход:
2007-02-26
Метод второй:
date_format()
- Верните новый объект DateTime, а затем отформатируйте дату:<?php $date=date_create("2013-03-15"); echo date_format($date,"Y/m/d H:i:s"); ?>
Выход:
2013/03/15 00:00:00
источник
Ты можешь использовать
Carbon::createFromTimestamp
ЛЕЗВИЕ
{{ \Carbon\Carbon::createFromTimestamp(strtotime($user->from_date))->format('d-m-Y')}}
источник
У меня была аналогичная проблема, я хотел изменить формат, но мне также нужна была гибкость, позволяющая изменять формат и в движке шаблонов лезвий.
Поэтому я установил свою модель следующим образом:
<?php namespace App; use Illuminate\Database\Eloquent\Model; \Carbon\Carbon::setToStringFormat('d-m-Y'); class User extends Model { protected $dates = [ 'from_date', ]; }
setToStringFormat
Установят все даты , чтобы использовать этот формат для этой модели.Преимущество этого для меня в том, что я мог бы иметь желаемый формат без мутатора, потому что с мутатором атрибут возвращается в виде строки, означающей, что в шаблоне лезвия мне пришлось бы написать что-то вроде этого, если бы я хотел изменить формат в шаблоне:
{{ date('Y', strtotime($user->from_date)) }}
Что не очень чисто.
Вместо этого атрибут по-прежнему возвращается как экземпляр Carbon, однако сначала возвращается в желаемом формате.
Это означает, что в шаблоне я мог бы написать следующий, более чистый код:
{{ $user->from_date->format('Y') }}
Помимо возможности переформатировать экземпляр Carbon, я также могу вызывать различные методы Carbon для атрибута в шаблоне.
Вероятно, в этом подходе есть упущение; Готов поспорить, что указывать строковый формат в верхней части модели - не лучшая идея, если это повлияет на другие скрипты.
Из того, что я видел до сих пор, этого не произошло. Он только изменил углерод по умолчанию только для этой модели.В этом случае было бы неплохо вернуть формат Carbon к тому, что было изначально в нижней части сценария модели. Это разумная идея, но для каждой модели будет работать собственный формат.
Напротив, если у вас один и тот же формат для каждой модели, то вместо этого в вашем AppServiceProvider. Это просто сделало бы код более аккуратным и легким в обслуживании.
источник
Иногда изменение формата даты не работает должным образом, особенно в Laravel. Так что в этом случае лучше использовать:
$date1 = strtr($_REQUEST['date'], '/', '-'); echo date('Y-m-d', strtotime($date1));
Тогда вы сможете избежать ошибки типа «1970-01-01»!
источник
m/d/y
илиd-m-y
устраняются неоднозначностью, если посмотреть на разделитель между различными компонентами: если разделителем является косая черта(/)
, тоm/d/y
предполагается американский ; тогда как если разделителем является тире(-)
или точка(.)
,d-m-y
предполагается европейский формат. Если, однако, год указан в формате двух цифр и разделителем является тире(-)
, строка даты анализируется какy-m-d
. php.net/manual/en/function.strtotime.phpВ Laravel вы можете добавить функцию внутри app / Helper / helper.php, например
function formatDate($date = '', $format = 'Y-m-d'){ if($date == '' || $date == null) return; return date($format,strtotime($date)); }
И вызовите эту функцию на любом контроллере, как это
$start_date = formatDate($start_date,'Y-m-d');
Надеюсь, это поможет!
источник