2017-11-11 2 views
0

Ich habe eine Rails 5, wo Benutzer Termine in verschiedenen Ländern buchen können. Momentan speichert meine Datenbank alle Daten in UTC und die Rails App ist auf America/Sao_Paulo eingestellt.Rails 5 App, die mit Buchungen in mehreren Zeitzonen funktioniert

Wenn also jemand einen Termin für 14:00 Uhr bucht, wird die App dies als Sao_Paulo verstehen und in UTC umwandeln. Wenn ich das Datum lese, um es irgendwo zu zeigen, wird Rails es automatisch zurück nach Sao_Paulo konvertieren. Keine Hektik.

Aber jetzt, wenn jemand einen Termin in Deutschland bucht, nehme ich an, ich muss die Eingabe übernehmen und nach Deutschland/Berlin parsen. Rails speichert es als UTC und ich muss eine extra Spalte erstellen, um die Zeitzone zu speichern. Wenn ich die Zeit irgendwo anzeigen will, muss ich sie manuell zurück nach Berlin konvertieren.

Erhalte ich das richtig? Ich finde das ganze Thema ziemlich verwirrend. Gibt es einen Edelstein, der das alles für mich behandelt?

+1

Wenn Sie sagen, jemand bucht einen Termin in Deutschland, meinst du, die Person ist in Deutschland oder der Termin ist in Deutschland? Könnte sich die Person und der Termin in unterschiedlichen Zeitzonen befinden? Ich nehme an, Sie möchten die Zeit in der Zeitzone des Termins und nicht die Ortszeit der Person anzeigen? – EJ2015

Antwort

1

Ich glaube nicht, dass es ein Juwel für diese Anforderung gibt.

Ich habe dies manuell in meinem Projekt behandelt. Ich gab dem Benutzer die Option Zeitzone auszuwählen, während er die Zeit auswählte. Im Backend können Sie beim Speichern Zeit in UTC konvertieren.

Das Beste, was Sie für den Benutzer tun können, ist, dass JS-Code geschrieben wird, der den Standardwert von TimeZone nach dem Laden des Dokuments mithilfe der TimeZone des Benutzersystems festlegt.

Sie können das Beispiel davon auf meiner Website Shuriken Live überprüfen. Melden Sie sich einfach an und gehen Sie zum Live Polling Plugin und wählen Sie eine beliebige Vorlage aus. Versuchen Sie, diesen Beitrag zu planen. Ich habe die gleiche Methode dort auf meiner Website verwendet.

+0

Der Benutzer wählt tatsächlich ein Land aus, damit ich weiß, in welcher Zeitzone es zu konvertieren ist. – almo

+0

Ich habe keinen Edelstein gefunden, als ich vor etwa 1-2 Monaten versucht habe zu suchen. Also habe ich selbst Code geschrieben. Ich finde auch das Verwalten von Zeitfeldern sehr irritierend. –

+0

Danke für die Info ... also hast du eine neue Spalte mit der Zeitzone erstellt und die Zeit beim Parsen oder Lesen manuell umgerechnet? – almo

Verwandte Themen