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?


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.


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


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

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

4

Versuchen Sie dies auf Schienen

Time.new + 10.days 

Versuchen Sie dies auf Ruby

require 'date'
DateTime.now.next_day(10).to_time

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)
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.