Je veux changer le format de date qui est extrait de la base de données. maintenant j'ai 2016-10-01 {{$user->from_date}}
.Je veux changer le format 'dmy' dans laravel 5.3
{{ $user->from_date->format('d/m/Y')}}
Je veux changer le format de date qui est extrait de la base de données. maintenant j'ai 2016-10-01 {{$user->from_date}}
.Je veux changer le format 'dmy' dans laravel 5.3
{{ $user->from_date->format('d/m/Y')}}
Réponses:
Essaye ça:
date('d-m-Y', strtotime($user->from_date));
Il convertira la date dans d-m-Y
ou quel que soit le format que vous avez donné.
Remarque: Cette solution est une solution générale qui fonctionne pour php et n'importe lequel de ses frameworks. Pour une méthode spécifique à Laravel, essayez la solution fournie par Hamelraj .
À Laravel, utilisez Carbon c'est bon
{{ \Carbon\Carbon::parse($user->from_date)->format('d/m/Y')}}
null
?
parse(null)
il sera converti en heure actuelle
Dans votre ensemble de modèles:
protected $dates = ['name_field'];
après à votre avis:
{{ $user->from_date->format('d/m/Y') }}
travaux
Call to a member function format() on null
Vous pouvez vérifier Date Mutators
: https://laravel.com/docs/5.3/eloquent-mutators#date-mutators
Vous devez définir dans votre User
colonne de modèle from_date
dans$dates
tableau, puis vous pouvez changer le format dans$dateFormat
L'autre option est également de mettre cette méthode à votre User
modèle:
public function getFromDateAttribute($value) {
return \Carbon\Carbon::parse($value)->format('d-m-Y');
}
et puis en vue si vous exécutez, {{ $user->from_date }}
vous verrez le format que vous voulez.
La date facile à utiliser dans le modèle de lame utilise le carbone de cette façon
{{ \Carbon\Carbon::parse($user->from_date)->format('d/m/Y')}}
Vous pouvez procéder de 3 façons:
1) Utilisation du modèle Laravel
$user = \App\User::find(1);
$newDateFormat = $user->created_at->format('d/m/Y');
dd($newDateFormat);
2) Utilisation de PHP strtotime
$user = \App\User::find(1);
$newDateFormat2 = date('d/m/Y', strtotime($user->created_at));
dd($newDateFormat2);
3) Utilisation du carbone
$user = \App\User::find(1);
$newDateFormat3 = \Carbon\Carbon::parse($user->created_at)->format('d/m/Y');
dd($newDateFormat3);
Première méthode:
En utilisant le strtotime()
heure à est le meilleur format pour changer la date au format donné.
strtotime()
- Analyser toute description datetime textuelle en anglais dans un horodatage Unix
La fonction s'attend à recevoir une chaîne contenant un format de date anglais et essaiera d'analyser ce format en un horodatage Unix (le nombre de secondes depuis le 1er janvier 1970 00:00:00 UTC), par rapport à l'horodatage donné maintenant, ou l'heure actuelle si maintenant n'est pas fournie.
Exemple:
<?php
$timestamp = strtotime( "February 26, 2007" );
print date('Y-m-d', $timestamp );
?>
Production:
2007-02-26
Deuxième méthode:
date_format()
- Renvoyez un nouvel objet DateTime, puis formatez la date:
<?php
$date=date_create("2013-03-15");
echo date_format($date,"Y/m/d H:i:s");
?>
Production:
2013/03/15 00:00:00
J'ai eu un problème similaire, je voulais changer le format, mais je voulais aussi la flexibilité de pouvoir changer le format dans le moteur de modèle de lame aussi.
Par conséquent, je configure mon modèle comme suit:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
\Carbon\Carbon::setToStringFormat('d-m-Y');
class User extends Model
{
protected $dates = [
'from_date',
];
}
Le setToStringFormat
définira toutes les dates pour utiliser ce format pour ce modèle.
L'avantage pour moi est que je pourrais avoir le format que je voulais sans le mutateur, car avec le mutateur, l'attribut est renvoyé sous forme de chaîne, ce qui signifie que dans le modèle de lame, je devrais écrire quelque chose comme ça si je voulais changer le format dans le modèle:
{{ date('Y', strtotime($user->from_date)) }}
Ce qui n'est pas très propre.
Au lieu de cela, l'attribut est toujours renvoyé en tant qu'instance Carbon, mais il est d'abord renvoyé au format souhaité.
Cela signifie que dans le modèle, je pourrais écrire le code suivant, plus propre:
{{ $user->from_date->format('Y') }}
En plus de pouvoir reformater l'instance Carbon, je peux également appeler diverses méthodes Carbon sur l'attribut du modèle.
Il y a probablement un oubli de cette approche; Je parie que ce n'est pas une bonne idée de spécifier le format de chaîne en haut du modèle au cas où cela affecterait d'autres scripts. D'après ce que j'ai vu jusqu'à présent, cela ne s'est pas produit. Il n'a changé que le carbone par défaut pour ce modèle uniquement.
Dans ce cas, cela pourrait être un bon retour au format Carbon à ce qu'il était à l'origine au bas du script du modèle. C'est une idée corsée, mais cela fonctionnerait pour que chaque modèle ait son propre format.
Au contraire, si vous avez le même format pour chaque modèle, alors dans votre AppServiceProvider à la place. Cela permettrait simplement de garder le code plus net et plus facile à maintenir.
Parfois, changer le format de la date ne fonctionne pas correctement, en particulier dans Laravel. Donc dans ce cas, il vaut mieux utiliser:
$date1 = strtr($_REQUEST['date'], '/', '-');
echo date('Y-m-d', strtotime($date1));
Ensuite, vous pouvez éviter une erreur comme "1970-01-01"!
m/d/y
ou d-m-y
sont clarifiées en regardant le séparateur entre les différents composants: si le séparateur est une barre oblique (/)
, alors l'Américain m/d/y
est supposé; alors que si le séparateur est un tiret (-)
ou un point (.)
, alors le d-m-y
format européen est supposé. Si, cependant, l'année est donnée dans un format à deux chiffres et que le séparateur est un tiret (-)
, la chaîne de date est analysée comme y-m-d
. php.net/manual/en/function.strtotime.php
Dans Laravel, vous pouvez ajouter une fonction dans app / Helper / helper.php comme
function formatDate($date = '', $format = 'Y-m-d'){
if($date == '' || $date == null)
return;
return date($format,strtotime($date));
}
Et appelez cette fonction sur n'importe quel contrôleur comme celui-ci
$start_date = formatDate($start_date,'Y-m-d');
J'espère que cela aide!
from_date
colonne d' affichage .