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')}}
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')}}
Respostas:
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 .
No Laravel usar Carbon é bom
{{ \Carbon\Carbon::parse($user->from_date)->format('d/m/Y')}}
null
?
parse(null)
ele será convertido como data e hora atual
Em seu conjunto de modelos:
protected $dates = ['name_field'];
depois em sua opinião:
{{ $user->from_date->format('d/m/Y') }}
trabalho
Call to a member function format() on null
Você pode verificar Date Mutators
: https://laravel.com/docs/5.3/eloquent-mutators#date-mutators
Você precisa definir em sua User
coluna de modelo from_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.
Data fácil de usar no modelo de lâmina, use Carbon dessa maneira
{{ \Carbon\Carbon::parse($user->from_date)->format('d/m/Y')}}
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);
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 Unix
A 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
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.
À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"!
m/d/y
ou d-m-y
são eliminadas da ambigüidade observando o separador entre os vários componentes: se o separador for uma barra (/)
, o americano m/d/y
será assumido; ao passo que se o separador for um traço (-)
ou um ponto (.)
, o d-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 como y-m-d
. php.net/manual/en/function.strtotime.php
No 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!
from_date
coluna.