Я хочу изменить формат даты, который извлекается из базы данных.
теперь я получил 2016-10-01 {{$user->from_date}}
. Я хочу изменить формат "d-m-y" в laravel 5.3
{{ $user->from_date->format('d/m/Y')}}
Я хочу изменить формат даты, который извлекается из базы данных.
теперь я получил 2016-10-01 {{$user->from_date}}
. Я хочу изменить формат "d-m-y" в laravel 5.3
{{ $user->from_date->format('d/m/Y')}}
Попробуй это:
date('d-m-Y', strtotime($user->from_date));
Он преобразует дату в формат dmY
.
Примечание. Это решение является общим решением, которое работает для php и любых его фреймворков. Для конкретного метода Laravel попробуйте решение, предоставленное Hamelraj.
В Laravel используйте Carbon его хороший
{{ \Carbon\Carbon::parse($user->from_date)->format('d/m/Y')}}
Вы можете проверить 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 }}
, вы увидите формат, который вы хотите.
В вашем наборе моделей:
protected $dates = ['name_field'];
после вашего просмотра:
{{ $user->from_date->format('d/m/Y') }}
работы
Простая в использовании дата в шаблоне лезвия использует Carbon таким образом
{{ \Carbon\Carbon::parse($user->from_date)->format('d/m/Y')}}
Метод первый:
Использование strtotime()
во времени - лучший формат для изменения даты в заданный формат.
strtotime()
- Разбор любого текстового описания текстового описания английского языка в метке времени Unix
Функция ожидает, что будет задана строка, содержащая английский формат даты, и попытается проанализировать этот формат в отметке времени Unix (количество секунд с 1 января 1970 года 00:00:00 по UTC) по отношению к временной отметке, приведенной в сейчас, или текущее время, если в настоящее время не поставляется.
Пример:
<?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
У меня была аналогичная проблема, я хотел изменить формат, но я также хотел, чтобы гибкость в том, чтобы изменить формат в движке шаблонов кликов.
Поэтому я поставил свою модель следующим образом:
<?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 только для этой модели.
В этом случае это может быть хорошим набором формата Carbon для того, что было первоначально в нижней части сценария модели. Это идея, но для каждой модели она будет иметь собственный формат.
Напротив, если у вас одинаковый формат для каждой модели, то вместо этого в AppServiceProvider. Это просто сохранит код более аккуратным и будет легче поддерживать.
Вы можете использовать Carbon::createFromTimestamp
BLADE
{{ \Carbon\Carbon::createFromTimestamp($user->from_date)->format('d-m-Y')}}
Иногда изменение формата даты работает неправильно, особенно в Laravel. Поэтому в этом случае лучше использовать:
$date1 = strtr($_REQUEST['date'], '/', '-');
echo date('Y-m-d', strtotime($date1));
Тогда вы можете избежать ошибок типа "1970-01-01"!
В 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');
Надеюсь, поможет!
Есть 3 способа, которые вы можете сделать:
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);