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


106

私は何かをやってみました

Time.now + 5.days

でも、それを見るのを漠然と覚えていて、とても感動しました2.years

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


うまくいくはずです。どのようなエラーが発生していますか?
カム

はい動作するはずです。あなたが軌道に乗っているので、Time.zone.nowはより適切に聞こえます
Ben

回答:


284

使用する

Time.now + 10.days

あるいは

10.days.from_now

どちらも間違いなく機能します。RubyだけでなくRailsを使用しているのですか?

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


@yuvalそれがレール上で動作し、あなたがそれを持っているruby..Thinkちょうどヘルプ他の人にはない
Catmandu

1
これは素晴らしいです。RubyとRailsが大好きです。
wpp 14

5
微妙な違いがあります。Time.now + 10.days常にシステムのタイムゾーンを取得します10.days.from_nowが、rails configに何も設定されていない場合はUTCタイムゾーンを取得します。
Babistalikesflyingonrails 2018年

通常、のTime.zone.now代わりに使用するのが最適ですTime.now
x-yuri

21

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


うん-スポット。これはバニラルビーではできません。
Yuval Karmi、2011年

1
IRBでも動作します。gemをインストールしている場合require 'active_support/time'は、セッションの最初またはコマンドを使用する前に
aを

10

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

Date.today() + 5

10

参考のために、他のいくつかのオプション

-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] 結果に含まれる時刻のみの日付

4

これをRailsで試す

Time.new + 10.days 

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

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

2

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

DateTime.now.days_since(10)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.