Ich möchte das Datumsformat ändern, das aus der Datenbank abgerufen wird. Jetzt habe ich den 01.10.2016. {{$user->from_date}}
Ich möchte das Format 'dmy' in Laravel 5.3 ändern
{{ $user->from_date->format('d/m/Y')}}
Ich möchte das Datumsformat ändern, das aus der Datenbank abgerufen wird. Jetzt habe ich den 01.10.2016. {{$user->from_date}}
Ich möchte das Format 'dmy' in Laravel 5.3 ändern
{{ $user->from_date->format('d/m/Y')}}
Antworten:
Versuche dies:
date('d-m-Y', strtotime($user->from_date));
Das Datum wird in d-m-Y
das von Ihnen angegebene Format konvertiert .
Hinweis: Diese Lösung ist eine allgemeine Lösung, die für PHP und alle seine Frameworks funktioniert. Probieren Sie für eine Laravel-spezifische Methode die von Hamelraj bereitgestellte Lösung aus .
In Laravel verwenden Sie Carbon, es ist gut
{{ \Carbon\Carbon::parse($user->from_date)->format('d/m/Y')}}
null
?
parse(null)
, wird dieser als aktuelles Datum und Uhrzeit konvertiert
In Ihrem Modellset:
protected $dates = ['name_field'];
nach Ihrer Ansicht nach:
{{ $user->from_date->format('d/m/Y') }}
funktioniert
Call to a member function format() on null
Sie können Folgendes überprüfen Date Mutators
: https://laravel.com/docs/5.3/eloquent-mutators#date-mutators
Sie müssen in Ihrer User
Modellspalte from_date
ein $dates
Array festlegen und können dann das Format in ändern$dateFormat
Die andere Option besteht darin, diese Methode in Ihr User
Modell aufzunehmen:
public function getFromDateAttribute($value) {
return \Carbon\Carbon::parse($value)->format('d-m-Y');
}
und dann in der Ansicht, wenn Sie ausführen {{ $user->from_date }}
, sehen Sie das gewünschte Format.
Einfach zu verwendendes Datum in der Klingenvorlage Verwenden Sie Carbon auf diese Weise
{{ \Carbon\Carbon::parse($user->from_date)->format('d/m/Y')}}
Es gibt drei Möglichkeiten:
1) Verwenden des Laravel-Modells
$user = \App\User::find(1);
$newDateFormat = $user->created_at->format('d/m/Y');
dd($newDateFormat);
2) Verwenden von PHP strtotime
$user = \App\User::find(1);
$newDateFormat2 = date('d/m/Y', strtotime($user->created_at));
dd($newDateFormat2);
3) Verwendung von Kohlenstoff
$user = \App\User::find(1);
$newDateFormat3 = \Carbon\Carbon::parse($user->created_at)->format('d/m/Y');
dd($newDateFormat3);
Methode Eins:
Die Verwendung der strtotime()
to-Zeit ist das beste Format, um das Datum in das angegebene Format zu ändern.
strtotime()
- Analysieren Sie alle englischen Text-Datums- / Uhrzeitbeschreibungen in einem Unix-Zeitstempel
Die Funktion erwartet eine Zeichenfolge mit einem englischen Datumsformat und versucht, dieses Format in einen Unix-Zeitstempel (die Anzahl der Sekunden seit dem 1. Januar 1970 00:00:00 UTC) relativ zum jetzt angegebenen Zeitstempel oder zu analysieren die aktuelle Zeit, wenn jetzt nicht geliefert wird.
Beispiel:
<?php
$timestamp = strtotime( "February 26, 2007" );
print date('Y-m-d', $timestamp );
?>
Ausgabe:
2007-02-26
Methode Zwei:
date_format()
- Geben Sie ein neues DateTime-Objekt zurück und formatieren Sie 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
Ich hatte ein ähnliches Problem, ich wollte das Format ändern, aber ich wollte auch die Flexibilität, das Format auch in der Blade-Template-Engine ändern zu können.
Ich habe mein Modell daher wie folgt eingerichtet:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
\Carbon\Carbon::setToStringFormat('d-m-Y');
class User extends Model
{
protected $dates = [
'from_date',
];
}
Das setToStringFormat
legt alle Daten fest, um dieses Format für dieses Modell zu verwenden.
Dies hat für mich den Vorteil, dass ich das gewünschte Format ohne den Mutator haben könnte, da das Attribut mit dem Mutator als Zeichenfolge zurückgegeben wird, was bedeutet, dass ich in der Blade-Vorlage so etwas schreiben müsste, wenn ich wollte Ändern Sie das Format in der Vorlage:
{{ 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 die Vorlage den folgenden saubereren Code schreiben könnte:
{{ $user->from_date->format('Y') }}
Ich kann nicht nur die Carbon-Instanz neu formatieren, sondern auch verschiedene Carbon-Methoden für das Attribut in der Vorlage aufrufen.
Es gibt wahrscheinlich ein Versehen bei diesem Ansatz; Ich wette, es ist keine gute Idee, das Zeichenfolgenformat oben im Modell anzugeben, falls es andere Skripte betrifft. Nach dem, was ich bisher gesehen habe, ist das nicht geschehen. Es wurde nur der Standard-Carbon nur für dieses Modell geändert.
In diesem Fall kann es sinnvoll sein, das Carbon-Format auf das zurückzusetzen, was es ursprünglich am Ende des Modellskripts war. Dies ist eine gute Idee, aber es würde funktionieren, wenn jedes Modell ein eigenes Format hätte.
Wenn Sie dagegen für jedes Modell das gleiche Format haben, verwenden Sie stattdessen Ihren AppServiceProvider. Das würde den Code nur übersichtlicher und einfacher zu warten halten.
Manchmal funktioniert das Ändern des Datumsformats nicht richtig, insbesondere in Laravel. In diesem Fall ist es besser, Folgendes zu verwenden:
$date1 = strtr($_REQUEST['date'], '/', '-');
echo date('Y-m-d', strtotime($date1));
Dann können Sie Fehler wie "1970-01-01" vermeiden!
m/d/y
oder d-m-y
werden durch Betrachten des Trennzeichens zwischen den verschiedenen Komponenten eindeutig definiert: Wenn das Trennzeichen ein Schrägstrich ist (/)
, wird der Amerikaner m/d/y
angenommen; Wenn das Trennzeichen ein Bindestrich (-)
oder ein Punkt ist (.)
, wird das europäische d-m-y
Format angenommen. Wenn das Jahr jedoch in einem zweistelligen Format angegeben wird und das Trennzeichen ein Bindestrich ist (-)
, wird die Datumszeichenfolge als analysiert y-m-d
. php.net/manual/en/function.strtotime.php
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));
}
Rufen Sie diese Funktion auf einem solchen Controller auf
$start_date = formatDate($start_date,'Y-m-d');
Ich hoffe es hilft!
from_date
.