Изменить формат даты на странице просмотра laravel

Я хочу изменить формат даты, который извлекается из базы данных. теперь я получил 2016-10-01 {{$user->from_date}}. Я хочу изменить формат "d-m-y" в laravel 5.3

{{ $user->from_date->format('d/m/Y')}}

Ответ 1

Попробуй это:

date('d-m-Y', strtotime($user->from_date));

Он преобразует дату в формат dmY.

Примечание. Это решение является общим решением, которое работает для php и любых его фреймворков. Для конкретного метода Laravel попробуйте решение, предоставленное Hamelraj.

Ответ 2

В Laravel используйте Carbon его хороший

{{ \Carbon\Carbon::parse($user->from_date)->format('d/m/Y')}}

Ответ 3

Вы можете проверить 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 }}, вы увидите формат, который вы хотите.

Ответ 4

В вашем наборе моделей:

protected $dates = ['name_field'];

после вашего просмотра:

{{ $user->from_date->format('d/m/Y') }}

работы

Ответ 5

Простая в использовании дата в шаблоне лезвия использует Carbon таким образом

{{ \Carbon\Carbon::parse($user->from_date)->format('d/m/Y')}}

Ответ 6

Метод первый:

Использование 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 

Ответ 7

У меня была аналогичная проблема, я хотел изменить формат, но я также хотел, чтобы гибкость в том, чтобы изменить формат в движке шаблонов кликов.

Поэтому я поставил свою модель следующим образом:

<?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. Это просто сохранит код более аккуратным и будет легче поддерживать.

Ответ 8

Вы можете использовать Carbon::createFromTimestamp

BLADE

{{ \Carbon\Carbon::createFromTimestamp($user->from_date)->format('d-m-Y')}}

Ответ 9

Иногда изменение формата даты работает неправильно, особенно в Laravel. Поэтому в этом случае лучше использовать:

$date1 = strtr($_REQUEST['date'], '/', '-');
echo date('Y-m-d', strtotime($date1));

Тогда вы можете избежать ошибок типа "1970-01-01"!

Ответ 10

В 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');

Надеюсь, поможет!

Ответ 11

Есть 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);