Quero alterar o formato da data que é obtido do banco de dados. agora eu tenho 01/10/2016 {{$user->from_date}}
. Quero mudar o formato 'dmy' no laravel 5.3
{{ $user->from_date->format('d/m/Y')}}
Experimente isto:
date('d-m-Y', strtotime($user->from_date));
Ele irá converter a data em d-m-Y
qualquer formato que você tenha fornecido.
Nota: Esta solução é uma solução geral que funciona para php e qualquer um de seus frameworks. Para um método específico do Laravel, tente a solução fornecida por Hamelraj .
from_date
coluna.No Laravel usar Carbon é bom
{{ \Carbon\Carbon::parse($user->from_date)->format('d/m/Y')}}
fonte
null
?parse(null)
ele será convertido como data e hora atualEm seu conjunto de modelos:
protected $dates = ['name_field'];
depois em sua opinião:
{{ $user->from_date->format('d/m/Y') }}
trabalho
fonte
Call to a member function format() on null
Você pode verificar
Date Mutators
: https://laravel.com/docs/5.3/eloquent-mutators#date-mutatorsVocê precisa definir em sua
User
coluna de modelofrom_date
em$dates
array e então você pode alterar o formato em$dateFormat
A outra opção também é colocar este método em seu
User
modelo:public function getFromDateAttribute($value) { return \Carbon\Carbon::parse($value)->format('d-m-Y'); }
e então, se você correr
{{ $user->from_date }}
, verá o formato que deseja.fonte
Data fácil de usar no modelo de lâmina, use Carbon dessa maneira
{{ \Carbon\Carbon::parse($user->from_date)->format('d/m/Y')}}
fonte
Existem 3 maneiras de fazer:
1) Usando o modelo Laravel
$user = \App\User::find(1); $newDateFormat = $user->created_at->format('d/m/Y'); dd($newDateFormat);
2) Usando PHP strtotime
$user = \App\User::find(1); $newDateFormat2 = date('d/m/Y', strtotime($user->created_at)); dd($newDateFormat2);
3) Usando Carbono
$user = \App\User::find(1); $newDateFormat3 = \Carbon\Carbon::parse($user->created_at)->format('d/m/Y'); dd($newDateFormat3);
fonte
Método Um:
Usando o
strtotime()
hora to é o melhor formato para alterar a data para o formato fornecido.strtotime()
- Analise sobre qualquer descrição de data e hora textual em inglês em um carimbo de data / hora UnixA função espera receber uma string contendo um formato de data em inglês e tentará analisar esse formato em um carimbo de data / hora Unix (o número de segundos desde 1 ° de janeiro de 1970 00:00:00 UTC), relativo ao carimbo de data / hora fornecido em agora, ou a hora atual se now não for fornecida.
Exemplo:
<?php $timestamp = strtotime( "February 26, 2007" ); print date('Y-m-d', $timestamp ); ?>
Resultado:
2007-02-26
Método dois:
date_format()
- Retorne um novo objeto DateTime e formate a data:<?php $date=date_create("2013-03-15"); echo date_format($date,"Y/m/d H:i:s"); ?>
Resultado:
2013/03/15 00:00:00
fonte
Você pode usar
Carbon::createFromTimestamp
LÂMINA
{{ \Carbon\Carbon::createFromTimestamp(strtotime($user->from_date))->format('d-m-Y')}}
fonte
Eu tive um problema semelhante, queria mudar o formato, mas também queria a flexibilidade de poder mudar o formato no mecanismo de template blade.
Eu, portanto, configuro meu modelo da seguinte forma:
<?php namespace App; use Illuminate\Database\Eloquent\Model; \Carbon\Carbon::setToStringFormat('d-m-Y'); class User extends Model { protected $dates = [ 'from_date', ]; }
O
setToStringFormat
irá definir todas as datas para usar este formato para este modelo.A vantagem disso para mim é que eu poderia ter o formato que queria sem o modificador, porque com o modificador, o atributo é retornado como uma string, o que significa que no modelo de lâmina eu teria que escrever algo assim se quisesse mude o formato no modelo:
{{ date('Y', strtotime($user->from_date)) }}
O que não é muito limpo.
Em vez disso, o atributo ainda é retornado como uma instância Carbon, no entanto, ele é retornado primeiro no formato desejado.
Isso significa que no modelo eu poderia escrever o seguinte código mais limpo:
{{ $user->from_date->format('Y') }}
Além de poder reformatar a instância Carbon, também posso chamar vários métodos Carbon no atributo do modelo.
Provavelmente, há um descuido nessa abordagem; Aposto que não é uma boa ideia especificar o formato da string na parte superior do modelo, caso isso afete outros scripts.
Pelo que vi até agora, isso não aconteceu. Ele mudou apenas o carbono padrão para esse modelo.Neste caso, pode ser uma boa configuração do formato Carbon de volta ao que era originalmente na parte inferior do script do modelo. Esta é uma ideia encorpada, mas funcionaria para cada modelo ter seu próprio formato.
Ao contrário, se você tiver o mesmo formato para cada modelo, em vez disso, em seu AppServiceProvider. Isso apenas manteria o código mais organizado e fácil de manter.
fonte
Às vezes, alterar o formato da data não funciona corretamente, especialmente no Laravel. Então, nesse caso, é melhor usar:
$date1 = strtr($_REQUEST['date'], '/', '-'); echo date('Y-m-d', strtotime($date1));
Então você pode evitar erros como "1970-01-01"!
fonte
m/d/y
oud-m-y
são eliminadas da ambigüidade observando o separador entre os vários componentes: se o separador for uma barra(/)
, o americanom/d/y
será assumido; ao passo que se o separador for um traço(-)
ou um ponto(.)
, od-m-y
formato europeu será assumido. Se, entretanto, o ano for fornecido em um formato de dois dígitos e o separador for um hífen(-)
, a string de data será analisada comoy-m-d
. php.net/manual/en/function.strtotime.phpNo Laravel você pode adicionar uma função dentro de app / Helper / helper.php como
function formatDate($date = '', $format = 'Y-m-d'){ if($date == '' || $date == null) return; return date($format,strtotime($date)); }
E chame esta função em qualquer controlador como este
$start_date = formatDate($start_date,'Y-m-d');
Espero que ajude!
fonte