Es gibt Tabellendaten, die generisch sind und daher nur Zeit als Daten benötigen (kein Datum). Somit wird der Datentyp in postgresql als time
gespeichert.Warum speichert Rails Zeitformatdaten als UTC
Aber dann diese idiosyncracy
> @day_schedules.first
=> #<Schedule id: 17, start_time: "2000-01-01 06:00:00"
Dann erscheint,
> @day_schedules.first.start_time
=> 2000-01-01 06:00:00 UTC
in der Tat so ist diese Daten falsch wenn man will Daten mit datetime
Datentypen vergleichen, sagen ...
@interruptions[0].pause
=> Sat, 18 Mar 2017 07:35:18 CET +01:00
wie jetzt sind wir compa klingelt UTC bis MEZ ... Wie kann der time
als gegebener Wert "06:00:00" behandelt werden, aber für die CET +01:00
Zeitzone?
Alles soll in der Datenbank UTC sein, weil das die Rails Way ist. Ihre "Zeit" (eigentlich "Zeit ohne Zeitzone") ist nur eine Tageszeit in der Datenbank. Es gibt keine [Uhrzeitklasse in Ruby] (http://stackoverflow.com/a/42539230/479863), daher das Datum 2001-01-01 in Ihrer 'start_time'. Zeitzonen können in Ruby-Land angewendet werden oder auch nicht. Ich nehme an, dass Sie eine bessere Zeit haben würden, die Arbeit in der Datenbank zu erledigen (wo die Tageszeit eine echte Sache ist) und nur Zeitstempel herauszuziehen. –
Wenn ich nicht falsch liege, versuchst du zwei Zeitstempel zu vergleichen, in denen einer in UTC und der andere in CET ist. Es kann als Standard angesehen werden, dass Sie alles auf dem Server als UTC behandeln/speichern und dann entsprechend ändern sollten, wenn Sie es im Browser oder im Backend selbst zurücksenden. In diesem Fall werde ich vorschlagen, die andere Zeitzone in UTC zu konvertieren und dann die Berechnungen durchzuführen. Hilft das? – aks
Der Trick bestand darin zu verstehen, dass die Daten in UTC gespeichert sind, aber Datum und Uhrzeit sich beim Aufruf unterschiedlich verhalten. Die Lösung besteht also darin, einen Kettenbefehl zu verwenden, um Elemente auf einer konsistenten Basis zu verknüpfen. Start_time.in_time_zone Das ** in_time_zone ** -Suffix brachte alle Vergleiche in einer Zeile. – Jerome