Я хочу изменить формат даты, полученный из базы данных. теперь у меня 2016-10-01. {{$user->from_date}}
Я хочу изменить формат dmy в laravel 5.3
{{ $user->from_date->format('d/m/Y')}}
Я хочу изменить формат даты, полученный из базы данных. теперь у меня 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 .
В 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
У меня была аналогичная проблема, я хотел изменить формат, но мне также нужна была гибкость, позволяющая изменять формат и в движке шаблонов лезвий.
Поэтому я установил свою модель следующим образом:
<?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');
Надеюсь, это поможет!
from_date
столбец отображения .