web-dev-qa-db-ja.com

Railsで現在の時刻に10日を追加する方法

私は次のようなことをしてみました

Time.now + 5.days

しかし、2.yearsなどのようなことができることを見て、非常に感銘を受けたことを漠然と覚えていても、それはうまくいきません。

Rails 3でそれを行うにはどうすればよいですか?

99
Yuval Karmi

つかいます

Time.now + 10.days

あるいは

10.days.from_now

両方とも間違いなく機能します。 RubyだけでなくRailsにいるのですか?

あなたが間違いなくRailsにいるなら、どこからこれを実行しようとしていますか?アクティブサポートをロードする必要があることに注意してください。

265
gunn

daysyearsなどはアクティブサポートの一部です。したがって、これはirbでは機能しませんが、Rails consoleでは機能するはずです。

19
Jonathan Julian

これは間違いなく機能し、現在の日付に日を追加する必要がある場合はいつでもこれを使用します:

Date.today() + 5
9
dj kaori

参照用のその他のオプション

-10.days.ago
# Available in Rails 4
DateTime.now.days_ago(-10)

私が知っているすべてのオプションをリストしてください:

[1] Time.now + 10.days
[2] 10.days.from_now
[3] -10.days.ago
[4] DateTime.now.days_ago(-10)
[5] Date.today + 10

それでは、タイムゾーンを気にする場合、それらの違いは何ですか:

  • [1, 4]システムタイムゾーンあり
  • [2, 3] Railsアプリの設定タイムゾーン
  • [5]結果に時刻が含まれていない日付のみ
8
Hieu Pham

Railsでこれを試してください

Time.new + 10.days 

Rubyでこれを試してください

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

Rubyでこれを試してください。指定された日数後の新しい日付/時刻を返します

DateTime.now.days_since(10)
2
Ramyani