2016-06-16 10 views
0

Ich benutze Laravel 5.2 mit Carbon und ich versuche, Daten im Locale-Format zu bekommen. Ich meine, wenn ich das Datum 2015-12-31 in der Datenbank habe, möchte ich es als 12/31/2015 oder 31/12/2015 gedruckt wird, hängt vom Benutzergebietsschema ab.Lokalisieren Sie das Datumsformat in Laravel

Im User Modell habe ich ein Attribut locale, das das Benutzergebietsschema darstellt. Aber ich weiß nicht, wer es machen soll. Ich weiß, dass Laravel Carbon für Daten verwendet, aber in der Carbon-Klasse sehe ich, dass das Format Y-m-d hart codiert ist.

Ich brauche noch die Daten werden im Format Y-m-d gespeichert und nur die Präsentation wird von der User->locale Attribut abhängen.

Wie kann ich dieses Verhalten erreichen? Gibt es eine Möglichkeit, dies mit Carbon selbst zu tun?

Antwort

0

Es gibt eine Möglichkeit, dies mit Carbon zu tun, aber es scheint, dass es wirklich je nach den Spezifikationen Ihres Servers variieren wird und was nicht. Aus dem Lesen scheint es, dass Ländereinstellungspakete nicht immer konsistent sind. Verwenden Sie locale -a auf Ihrem Produktionsserver-Terminal, um zu überprüfen, welche unterstützten Gebietsschemas Sie installiert haben. Wenn Sie eines installieren müssen, verwenden Sie sudo locale-gen <NEW LOCALE>.

Aber sobald Sie Ihre locale-strings aussortiert haben, so scheint es, dass Sie

$date = new Carbon; 

setlocale('en_GB'); 

echo $date->formatLocalized('%x'); // '16/06/16' 

I abgeleitet, um den %x Modifikator aus der strftime() Funktion sagen können, ist es das Format spezifiziert „die bevorzugte Datumsdarstellung basierend auf seinen locale, ohne die Zeit "nach the php manual

1

Ich habe eine Lösung für Sie.
Aufschalten getAttribute Methode in Ihrem Modell

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class User extends Model 
{ 
    use DateFormatting; 

    protected $dates = [ 
     'finished_at', 
     // other field names that you need to format 
    ]; 

    public function getAttribute($key) 
    { 
     if (array_key_exists($key, $this->getDates())) { 
      // here you can format your date 
     } 
     return parent::getAttribute($key); 
    } 

} 

nach allem, was Sie zu diesen Feldern wie gewohnt zugreifen können (unter Verwendung von Magie __get())

$model->finished_at; 
Verwandte Themen