Я хочу змінити формат дати, який отримується з бази даних. тепер я отримав 01.10.2016. {{$user->from_date}}
Я хочу змінити формат 'dmy' у laravel 5.3
{{ $user->from_date->format('d/m/Y')}}
Я хочу змінити формат дати, який отримується з бази даних. тепер я отримав 01.10.2016. {{$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::parse($user->from_date)->format('d/m/Y')}}
Ви можете зробити 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);
Спосіб перший:
Використання 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. Це просто збереже код більш охайним і простішим у обслуговуванні.
Іноді зміна формату дати не працює належним чином, особливо в 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
стовпець відображення .