2

Railsで相対時間を行う方法を知る必要がありますが、文としてではなく、これを行うことができるようなものです(2008-08-05 23:48:04 -0400のような形式を入力した場合)

if time_ago < 1 hour, 3 weeks, 1 day, etc.
    execute me
end
4

2 に答える 2

9

基本的な相対時間:

# If "time_ago" is more than 1 hour past the current time
if time_ago < 1.hour.ago
  execute_me
end


比較:

を使用して、より古い<かどうかを確認し、より新しいかどうかを確認しますtime_ago1.hour.ago>time_ago1.hour.ago


時間を組み合わせ、小数時間を使用する:

davidbが述べたように、時間を組み合わせて、次のことを行うことができます。

(1.day + 3.hours + 2500.seconds).ago

次のように、小数秒を実行することもできます。 0.5.seconds.ago

はありません.milliseconds.ago。したがって、ミリ秒の精度が必要な場合は、小数秒に分割してください。つまり、1ミリ秒前は次のとおりです。

0.001.seconds.ago


.ago()一般:

ほぼすべての数値の末尾に置く.agoと、その数値は秒数として扱われます。

分数をparanthesisで使用することもできます。

(1/2.0).hour.ago   # half hour ago
(1/4.0).year.ago   # quarter year ago

注:分数を使用するには、分子または分母のいずれかが浮動小数点数である必要があります。そうでない場合、Rubyは自動的に答えを整数にキャストし、数学を破棄します。

于 2011-10-18T14:22:20.850 に答える
3

あなたはsthを意味します。このような?

if time_ago < Time.now-(1.days+1.hour+1.minute)
    execute me
end
于 2011-10-18T14:23:06.310 に答える