2017-03-28 10 views
0

Ich versuche, eine Datenbank von Benutzerfahrten bauen, die beinhaltet die Speicherung:Laravel mehrere Zeitzonen

  • Flugnummer
  • DepartureAirport
  • DepartureTime
  • ArrivalAirport
  • ArrivalTime

Beachten Sie, dass sich beide Flughäfen in unterschiedlichen Zeitzonen befinden können. Ich muss den Zeitunterschied und die Anzahl der Tage zu diesem Flug usw. ausarbeiten.

Ich bin mir nicht sicher, wie ich dieses Problem angehen soll. Sollte ich weitere Spalten hinzufügen, um lokale Datums- und UTC-Zeiten zu speichern?

Auch ich habe gesehen, dass Laravel dateTimeTz() Spaltentyp hat. Es scheint jedoch keine Informationen über die Zeitzone zu speichern.

Beiträge Tabelle:

$table->dateTimeTz('newTime')->nullable(); 

setzt neue Zeit:

$p->newTime = \Carbon\Carbon::now('Asia/Kolkata') 
=> Carbon\Carbon {#841 
    +"date": "2017-03-28 16:23:33.490926", 
    +"timezone_type": 3, 
    +"timezone": "Asia/Kolkata", 
    } 

>>> $p 
=> App\Post {#836 
    id: 1, 
    user_id: 1, 
    title: "Et quaerat deserunt qui ullam voluptas.", 
    body: "Aut eos id ut qui laborum. Tempore rerum ut quas deserunt voluptas optio.", 
    slug: "et-quaerat-deserunt-qui-ullam-voluptas", 
    newTime: "2017-03-28 16:23:33", 
    created_at: "2017-03-28 10:51:36", 
    updated_at: "2017-03-28 10:51:36", 
    } 
+0

keine direkte Antwort, aber Laravel verwendet die Carbon-Bibliothek so vielleicht an diesem docs schauen http: // carbon.nebot.com/docs/ – Christophvh

Antwort

1

Der einfachste Weg ist zum Speichern von Datum und Uhrzeit im UNIX-Zeitstempel (es ist Zeitzone unabhängig). Dann können Sie es auf jede Zeitzone konvertieren (abhängig vom Standort des Nutzers oder Flughafen Zeitzone)

0

ist ganz einfach folgen:

  • Shop alle Zeitstempel in UTC (default in Laravel config).
  • Die Benutzer können ihre Zeitzone auswählen und in der Benutzertabelle speichern.
  • Dann können Sie Kohlenstoff verwenden, um Daten in ihre Ortszeit zu konvertieren. (Carbon Bibliothek, die bereits in Laravel ist).

Zum Beispiel, für einen Benutzer, der in anderem Land lebt wie Europe/London oder Asia/Kolkata

$something->created_at->timezone($user->timezone);