So fügen Sie der aktuellen Zeit in Rails 10 Tage hinzu

106

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.yearsusw.

Wie mache ich das in Rails 3?

Yuval Karmi
quelle
Das sollte funktionieren. Welchen Fehler bekommen Sie?
Cam
Es sollte ja funktionieren. Da Sie in Schienen sind, klingt Time.zone.now angemessener
Ben

Antworten:

284

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.

gunn
quelle
@yuval es funktioniert auf Schienen und nicht Rubin .. Denken Sie, Sie haben es, aber nur um anderen zu helfen
Catmandu
1
Das ist einfach fantastisch. Ich liebe Ruby und Rails.
wpp
5
Es gibt einen subtilen Unterschied. Time.now + 10.daysNimmt immer Ihre Systemzeitzone auf, während 10.days.from_nowdie UTC-Zeitzone erfasst wird, wenn in der Rails-Konfiguration nichts festgelegt ist.
Babistalikesflyingonrails
Im Allgemeinen ist es am besten, Time.zone.nowanstelle von zu verwenden Time.now.
X-Yuri
21

days, yearsUsw. sind Teil der aktiven Unterstützung, so dass diese nicht in funktionieren irb, aber es sollte in Arbeit rails console.

Jonathan Julian
quelle
yeup - genau richtig. kann das nicht in Vanille Rubin tun.
Yuval Karmi
1
Funktioniert auch in irb. Wenn Sie den Edelstein installiert haben, machen Sie einfach einen require 'active_support/time'zu Beginn der Sitzung oder bevor Sie seine Befehle verwenden
darkdefender27
10

Dies funktioniert definitiv und ich verwende dies überall dort, wo ich Tage zum aktuellen Datum hinzufügen muss:

Date.today() + 5
dj kaori
quelle
10

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 enthalten
Hieu Pham
quelle
4

Versuchen Sie dies auf Schienen

Time.new + 10.days 

Versuchen Sie dies auf Ruby

require 'date'
DateTime.now.next_day(10).to_time
Rahul Patel
quelle
2

Versuchen Sie dies auf Ruby. Es wird ein neues Datum / eine neue Uhrzeit mit der angegebenen Anzahl von Tagen in der Zukunft zurückgegeben

DateTime.now.days_since(10)
Ramyani
quelle