Datum/Zeit-Vergleich in ruby
Habe ich diese Termine und Zeiten:
schedule.day_start # => 2014-09-27 15:30:00 UTC
date_now = Time.now # => 2014-09-27 15:11:14 +0200
date_now + 60.minutes # => 2014-09-27 16:11:14 +0200
Ich versuche zu erkennen, alle Zeitpläne, start-60 Minuten oder weniger vor day_start
. Mit dem folgenden code, bekomme ich als Antwort "NO"
statt "YES"
.
if schedule.day_start < (Time.now + 60.minutes)
"YES"
else
"NO"
end
Warum ist 2014-09-27 15:30:00 UTC
größer als 2014-09-27 16:11:14 +0200
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Arbeiten Sie Datumsangaben als UTC, so vermeiden Sie Zeit-zone Probleme
Time.now.utc
zeigt mir2014-09-27 14:10:14 UTC
, aber die aktuelle Zeit ist2014-09-27 16:10:14 UTC
. Wie vergleichen Sie diese beiden Termine dann? (schedule.day_start
zeigt den "richtigen" Zeitpunkt - nicht-2 hours
)Time.now
? Denn wenn es zum Beispiel zugeordnet ist, eine Konstante oder eine Globale variable, die es haben könnte, notieren Sie die Zeit, die beim starten des server. Prüfen Sie auch, ob Sie richtig set-up Ihreconfig.time_zone
, und natürlich, wenn Ihr system ist auf der rechten Zeit mitntpdate
Weil
ist gleichzeitig zu
kommt vor
Mit
Time
Objekte, "folgt" übersetzt "größer".With Time objects, "follows" translates to "greater".
?A
danach kommt (D. H. folgt) ZeitB
auf die zeitliche Skala, dann codeA > B
in Ruby wäretrue
(d.h.,A
größer alsB
).Überall, wenn die Zeit kommt, nach Zeit B, dann A ist als größer ist als B. Das gleiche gilt in Ihrem Fall.
Hier kann man deutlich sehen, dass, Zeit.nun + 60.Minuten ist ein timestamp vor dem Zeitplan.day_start. So, planen.day_start größer ist als die Zeit.nun + 60.Minuten, das ist, warum Ihr "wenn" Fall nicht zutreffen und daher KEINE gedruckt.