Je veux changer le format de date extrait de la base de données . Maintenant j'ai le 2016-10-01{{$user->from_date}}
.Je veux changer le format 'd-m-y' dans laravel 5.3
{{ $user->from_date->format('d/m/Y')}}
Essaye ça:
date('d-m-Y', strtotime($user->from_date));
Il convertira la date au format d-m-Y
.
Note: 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 Carbone c'est bon
{{ \Carbon\Carbon::parse($user->from_date)->format('d/m/Y')}}
Dans votre ensemble de modèles:
protected $dates = ['name_field'];
après à votre avis:
{{ $user->from_date->format('d/m/Y') }}
travaux
Vous pouvez vérifier Date Mutators
: https://laravel.com/docs/5.3/eloquent-mutators#date-mutators
Vous devez définir votre colonne de modèle User
from_date
dans le tableau $dates
, puis modifier le format dans $dateFormat
L’autre option consiste également à appliquer cette méthode à votre modèle User
:
public function getFromDateAttribute($value) {
return \Carbon\Carbon::parse($value)->format('d-m-Y');
}
et ensuite, si vous exécutez {{ $user->from_date }}
, vous verrez le format souhaité.
Utilisation facile de la date dans le gabarit de la lame Carbon de cette façon
{{ \Carbon\Carbon::parse($user->from_date)->format('d/m/Y')}}
Première méthode:
L'utilisation de strtotime()
to time est le meilleur format pour changer la date en un format donné.
strtotime()
- Analyse de la description textuelle date/heure 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 dans 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 );
?>
Sortie:
2007-02-26
Méthode deux:
date_format()
- Retourne un nouvel objet DateTime, puis formate la date:
<?php
$date=date_create("2013-03-15");
echo date_format($date,"Y/m/d H:i:s");
?>
Sortie:
2013/03/15 00:00:00
J'avais un problème similaire, je voulais changer le format, mais je voulais aussi pouvoir changer le format dans le moteur de template de lame également.
J'ai donc défini 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',
];
}
La setToStringFormat
définira toutes les dates d'utilisation de ce format pour ce modèle.
L'avantage de ceci 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 je devrais écrire quelque chose comme ceci dans le modèle de lame si Je voulais changer le format dans le template:
{{ 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, le nettoyeur:
{{ $user->from_date->format('Y') }}
En plus de pouvoir reformater l'instance Carbon, je peux également appeler différentes méthodes Carbon sur l'attribut du modèle.
Il y a probablement un oubli dans 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ù il affecte d'autres scripts. D'après ce que j'ai vu jusqu'à présent, cela ne s'est pas produit. Il a seulement changé le carbone par défaut pour ce modèle uniquement.
Dans ce cas, il peut être judicieux de redéfinir le format Carbon sur ce qu’il était au début du script de modèle. C'est une idée complexe, mais il serait utile que chaque modèle ait son propre format.
Contrairement, si vous avez le même format pour chaque modèle, utilisez plutôt AppServiceProvider. Cela garderait simplement le code plus propre et plus facile à maintenir.
Vous pouvez utiliser Carbon::createFromTimestamp
LAME
{{ \Carbon\Carbon::createFromTimestamp($user->from_date)->format('d-m-Y')}}
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 ça aide!
Parfois, changer le format de la date ne fonctionne pas correctement, surtout à Laravel. Donc, dans ce cas, il vaut mieux utiliser:
$date1 = strtr($_REQUEST['date'], '/', '-');
echo date('Y-m-d', strtotime($date1));
Ensuite, vous pouvez éviter les erreurs telles que "1970-01-01"!
Il y a 3 façons de faire:
1) Utilisation du modèle de Laravel
$user = \App\User::find(1);
$newDateFormat = $user->created_at->format('d/m/Y');
dd($newDateFormat);
2) Utiliser PHP strtotime
$user = \App\User::find(1);
$newDateFormat2 = date('d/m/Y', strtotime($user->created_at));
dd($newDateFormat2);
3) Utilisation de carbone
$user = \App\User::find(1);
$newDateFormat3 = \Carbon\Carbon::parse($user->created_at)->format('d/m/Y');
dd($newDateFormat3);