Quiero cambiar el formato de fecha que se obtiene de la base de datos. ahora tengo 2016-10-01 {{$user->from_date}}
. Quiero cambiar el formato 'dmy' en laravel 5.3
{{ $user->from_date->format('d/m/Y')}}
Prueba esto:
date('d-m-Y', strtotime($user->from_date));
Convertirá la fecha al d-m-Y
formato que le haya dado.
Nota: Esta solución es una solución general que funciona para php y cualquiera de sus marcos. Para un método específico de Laravel, pruebe la solución proporcionada por Hamelraj .
from_date
columna.En Laravel usa Carbon es bueno
{{ \Carbon\Carbon::parse($user->from_date)->format('d/m/Y')}}
fuente
null
?parse(null)
, se convertirá como fecha y hora actualEn su conjunto de modelos:
protected $dates = ['name_field'];
después en tu opinión:
{{ $user->from_date->format('d/m/Y') }}
trabajos
fuente
Call to a member function format() on null
Puede consultar
Date Mutators
: https://laravel.com/docs/5.3/eloquent-mutators#date-mutatorsNecesita establecer en la
User
columna de su modelofrom_date
en la$dates
matriz y luego puede cambiar el formato en$dateFormat
La otra opción también es poner este método en tu
User
modelo:public function getFromDateAttribute($value) { return \Carbon\Carbon::parse($value)->format('d-m-Y'); }
y luego, a la vista, si ejecuta
{{ $user->from_date }}
, verá el formato que desea.fuente
La fecha fácil de usar en la plantilla de la hoja usa Carbon de esa manera
{{ \Carbon\Carbon::parse($user->from_date)->format('d/m/Y')}}
fuente
Hay 3 formas de hacerlo:
1) Usando el modelo de 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) Uso de carbono
$user = \App\User::find(1); $newDateFormat3 = \Carbon\Carbon::parse($user->created_at)->format('d/m/Y'); dd($newDateFormat3);
fuente
Método uno:
Usar la
strtotime()
hora hasta es el mejor formato para cambiar la fecha al formato dado.strtotime()
- Analizar cualquier descripción textual de fecha y hora en inglés en una marca de tiempo de UnixLa función espera recibir una cadena que contenga un formato de fecha en inglés e intentará analizar ese formato en una marca de tiempo Unix (el número de segundos desde el 1 de enero de 1970 a las 00:00:00 UTC), en relación con la marca de tiempo dada ahora, o la hora actual si ahora no se proporciona.
Ejemplo:
<?php $timestamp = strtotime( "February 26, 2007" ); print date('Y-m-d', $timestamp ); ?>
Salida:
2007-02-26
Método dos:
date_format()
- Devuelve un nuevo objeto DateTime y luego formatea la fecha:<?php $date=date_create("2013-03-15"); echo date_format($date,"Y/m/d H:i:s"); ?>
Salida:
2013/03/15 00:00:00
fuente
Puedes usar
Carbon::createFromTimestamp
ESPADA
{{ \Carbon\Carbon::createFromTimestamp(strtotime($user->from_date))->format('d-m-Y')}}
fuente
Tuve un problema similar, quería cambiar el formato, pero también quería la flexibilidad de poder cambiar el formato también en el motor de plantilla Blade.
Por lo tanto, configuro mi modelo de la siguiente manera:
<?php namespace App; use Illuminate\Database\Eloquent\Model; \Carbon\Carbon::setToStringFormat('d-m-Y'); class User extends Model { protected $dates = [ 'from_date', ]; }
El
setToStringFormat
establecerá todas las fechas para usar este formato para este modelo.La ventaja de esto para mí es que podría tener el formato que quisiera sin el mutador, porque con el mutador, el atributo se devuelve como una cadena, lo que significa que en la plantilla de la hoja tendría que escribir algo como esto si quisiera cambiar el formato en la plantilla:
{{ date('Y', strtotime($user->from_date)) }}
Lo que no está muy limpio.
En cambio, el atributo todavía se devuelve como una instancia de Carbon, sin embargo, primero se devuelve en el formato deseado.
Eso significa que en la plantilla podría escribir el siguiente código más limpio:
{{ $user->from_date->format('Y') }}
Además de poder reformatear la instancia de Carbon, también puedo llamar a varios métodos de Carbon en el atributo de la plantilla.
Probablemente haya un descuido en este enfoque; Apuesto a que no es una buena idea especificar el formato de cadena en la parte superior del modelo en caso de que afecte a otros scripts.
Por lo que he visto hasta ahora, eso no ha sucedido. Solo ha cambiado el carbono predeterminado solo para ese modelo.En este caso, podría ser una buena opción volver a configurar el formato Carbon a lo que estaba originalmente en la parte inferior de la secuencia de comandos del modelo. Esta es una idea organizada, pero funcionaría que cada modelo tuviera su propio formato.
Por el contrario, si tiene el mismo formato para cada modelo, en su lugar, en su AppServiceProvider. Eso mantendría el código más ordenado y más fácil de mantener.
fuente
A veces, cambiar el formato de fecha no funciona correctamente, especialmente en Laravel. Entonces, en ese caso, es mejor usar:
$date1 = strtr($_REQUEST['date'], '/', '-'); echo date('Y-m-d', strtotime($date1));
¡Entonces puede evitar errores como "1970-01-01"!
fuente
m/d/y
od-m-y
se eliminan la ambigüedad observando el separador entre los distintos componentes: si el separador es una barra(/)
,m/d/y
se asume el americano ; mientras que si el separador es un guión(-)
o un punto(.)
,d-m-y
se asume el formato europeo . Sin embargo, si el año se da en un formato de dos dígitos y el separador es un guión(-)
, la cadena de fecha se analiza comoy-m-d
. php.net/manual/en/function.strtotime.phpEn Laravel puede agregar una función dentro de la aplicación / Helper / helper.php como
function formatDate($date = '', $format = 'Y-m-d'){ if($date == '' || $date == null) return; return date($format,strtotime($date)); }
Y llama a esta función en cualquier controlador como este
$start_date = formatDate($start_date,'Y-m-d');
¡Espero eso ayude!
fuente