Ich habe versucht, so etwas zu tun
Time.now + 5.days
aber das funktioniert nicht, obwohl ich mich vage daran erinnere, etwas gesehen zu haben und sehr beeindruckt zu sein, so etwas tun zu können 2.years
usw.
Wie mache ich das in Rails 3?
Ich habe versucht, so etwas zu tun
Time.now + 5.days
aber das funktioniert nicht, obwohl ich mich vage daran erinnere, etwas gesehen zu haben und sehr beeindruckt zu sein, so etwas tun zu können 2.years
usw.
Wie mache ich das in Rails 3?
Antworten:
Verwenden
Time.now + 10.days
oder auch
10.days.from_now
Beides funktioniert definitiv. Bist du sicher, dass du in Rails bist und nicht nur in Ruby?
Wenn Sie definitiv in Rails sind, von wo aus versuchen Sie dies auszuführen? Beachten Sie, dass Active Support geladen werden muss.
Time.now + 10.days
Nimmt immer Ihre Systemzeitzone auf, während 10.days.from_now
die UTC-Zeitzone erfasst wird, wenn in der Rails-Konfiguration nichts festgelegt ist.
Time.zone.now
anstelle von zu verwenden Time.now
.
days
, years
Usw. sind Teil der aktiven Unterstützung, so dass diese nicht in funktionieren irb
, aber es sollte in Arbeit rails console
.
require 'active_support/time'
zu Beginn der Sitzung oder bevor Sie seine Befehle verwenden
Einige andere Optionen, nur als Referenz
-10.days.ago
# Available in Rails 4
DateTime.now.days_ago(-10)
Listen Sie einfach alle mir bekannten Optionen auf:
[1] Time.now + 10.days
[2] 10.days.from_now
[3] -10.days.ago
[4] DateTime.now.days_ago(-10)
[5] Date.today + 10
Was ist nun der Unterschied zwischen ihnen, wenn wir uns für die Zeitzone interessieren:
[1, 4]
Mit Systemzeitzone[2, 3]
Mit Konfigurationszeitzone Ihrer Rails-App[5]
Datum nur keine Uhrzeit im Ergebnis enthaltenVersuchen Sie dies auf Schienen
Time.new + 10.days
Versuchen Sie dies auf Ruby
require 'date'
DateTime.now.next_day(10).to_time