web-dev-qa-db-de.com

das Datumsformat in der Laravel-Ansichtsseite ändern

Ich möchte das Datumsformat ändern, das von der Datenbank abgerufen wird . Jetzt habe ich den 2016-10-01{{$user->from_date}}. Ich möchte das Format 'd-m-y' in laravel 5.3 ändern

{{ $user->from_date->format('d/m/Y')}}
45
user3386779

Versuche dies:

date('d-m-Y', strtotime($user->from_date));

Das Datum wird in das d-m-Y-Format konvertiert.

Note: Diese Lösung ist eine allgemeine Lösung, die für PHP und seine Frameworks funktioniert. Versuchen Sie für eine Laravel-spezifische Methode die Lösung von Hamelraj .

62
Mayank Pandeyz

In Laravel verwenden Sie Carbon es ist gut 

{{ \Carbon\Carbon::parse($user->from_date)->format('d/m/Y')}}
85
Hamelraj

In Ihrem Modellsatz:

protected $dates = ['name_field'];

nach deiner Ansicht:

{{ $user->from_date->format('d/m/Y') }}

funktioniert

29
HorecioDias

Sie können Date Mutators: https://laravel.com/docs/5.3/eloquent-mutators#date-mutators überprüfen.

Sie müssen in Ihrer User-Modellspalte from_date im $dates-Array festgelegt sein und dann das Format in $dateFormat ändern

Die andere Option setzt auch diese Methode in Ihr User-Modell:

public function getFromDateAttribute($value) {
    return \Carbon\Carbon::parse($value)->format('d-m-Y');
}

wenn Sie dann {{ $user->from_date }} ausführen, wird das gewünschte Format angezeigt.

28
Marek Skiba

Einfach zu verwendendes Datum in der Blattvorlage verwenden Carbon auf diese Weise

{{ \Carbon\Carbon::parse($user->from_date)->format('d/m/Y')}}
11
Umar Tariq

Methode eins:

Die Verwendung von strtotime() zum Zeitpunkt ist das beste Format, um das Datum in das angegebene Format zu ändern.

strtotime() - Informieren Sie sich über eine Beschreibung der englischen textlichen Datumsangaben in einem Unix-Zeitstempel

Die Funktion erwartet eine Zeichenfolge, die ein englisches Datumsformat enthält, und versucht, dieses Format in einen Unix-Zeitstempel (die Anzahl der Sekunden seit dem 1. Januar 1970, 00:00:00 UTC) zu analysieren, relativ zu dem jetzt angegebenen Zeitstempel oder Die aktuelle Uhrzeit wird jetzt nicht geliefert. 

Beispiel:

<?php
$timestamp = strtotime( "February 26, 2007" );  
print date('Y-m-d', $timestamp );
?>

Ausgabe:

2007-02-26

Methode zwei:

date_format() - Gibt ein neues DateTime-Objekt zurück und formatiert dann das Datum:

<?php
$date=date_create("2013-03-15");
echo date_format($date,"Y/m/d H:i:s");
?>

Ausgabe:

 2013/03/15 00:00:00 
4
Naresh Kumar .P

Ich hatte ein ähnliches Problem, ich wollte das Format ändern, aber ich wollte auch die Flexibilität, das Format in der Blade-Template-Engine ändern zu können.

Ich stelle mein Modell daher wie folgt ein:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

\Carbon\Carbon::setToStringFormat('d-m-Y');

class User extends Model
{
    protected $dates = [
        'from_date',
    ];
}

Die Variable setToStringFormat setzt alle Datumsangaben, um dieses Format für dieses Modell zu verwenden.
Der Vorteil für mich ist, dass ich das Format haben könnte, das ich ohne den Mutator wollte, denn mit dem Mutator wird das Attribut als String zurückgegeben, was bedeutet, dass ich in der Blade-Vorlage so etwas schreiben müsste, wenn Ich wollte das Format in der Vorlage ändern:

{{ date('Y', strtotime($user->from_date)) }}

Welches ist nicht sehr sauber.

Stattdessen wird das Attribut weiterhin als Carbon-Instanz zurückgegeben, jedoch zuerst im gewünschten Format.
.__ Das bedeutet, dass ich in der Vorlage den folgenden, saubereren Code schreiben könnte:

{{ $user->from_date->format('Y') }}

Neben der Möglichkeit, die Carbon-Instanz neu zu formatieren, kann ich auch verschiedene Carbon-Methoden für das Attribut in der Vorlage aufrufen.

Es gibt wahrscheinlich ein Versehen dieses Ansatzes; Ich wette, es ist keine gute Idee, das String-Format oben im Modell anzugeben, falls andere Skripte davon betroffen sind. Nach allem, was ich bisher gesehen habe, ist das nicht passiert. Nur der Standard-Carbon wurde nur für dieses Modell geändert.

In diesem Fall kann es sinnvoll sein, das Carbon-Format wieder auf das ursprüngliche Format des Modellskripts zu setzen. Dies ist eine gute Idee, aber es würde funktionieren, wenn jedes Modell sein eigenes Format hätte.
Wenn Sie für jedes Modell dasselbe Format haben, verwenden Sie stattdessen Ihren AppServiceProvider. Das würde den Code einfach sauberer halten und einfacher warten.

2
JustCarty

Sie können Carbon::createFromTimestamp verwenden

KLINGE

{{ \Carbon\Carbon::createFromTimestamp($user->from_date)->format('d-m-Y')}}
1
kosta

In Laravel können Sie eine Funktion in app/Helper/helper.php hinzufügen

function formatDate($date = '', $format = 'Y-m-d'){
    if($date == '' || $date == null)
        return;

    return date($format,strtotime($date));
}

Und rufen Sie diese Funktion auf einem beliebigen Controller auf

$start_date = formatDate($start_date,'Y-m-d');

Ich hoffe es hilft!

0
Prasant Kumar

Das Ändern des Datumsformats funktioniert manchmal nicht richtig, insbesondere in Laravel. In diesem Fall ist es besser zu verwenden:

$date1 = strtr($_REQUEST['date'], '/', '-');
echo date('Y-m-d', strtotime($date1));

Dann können Sie Fehler wie "1970-01-01" vermeiden!

0
Honest Knight

Es gibt drei Möglichkeiten, die Sie tun können:

1) Verwenden des Laravel-Modells

$user = \App\User::find(1);

$newDateFormat = $user->created_at->format('d/m/Y');

dd($newDateFormat);

2) Verwendung von PHP strtotime

$user = \App\User::find(1);

$newDateFormat2 = date('d/m/Y', strtotime($user->created_at));

dd($newDateFormat2);

3) unter Verwendung von Kohlenstoff

$user = \App\User::find(1);

$newDateFormat3 = \Carbon\Carbon::parse($user->created_at)->format('d/m/Y');

dd($newDateFormat3);
0