2013-06-27 80 views

回答

0
(duration.split('.').first.to_i * 3).to_s + '.days' 
+0

有schedule_date(由用戶選擇的任何日期),並希望增加持續時間如:2.days等與schedule_date。 {:run_at => schedule_date +持續時間)}。它工作正常,但想要乘以一個整數(3或任何)與持續時間 –

3

如果你的意思是要使用的輔助方法:

2.days 
# => 2 days 

2.days * 3 
# => 1036800 

如果你的意思是到m anipulate字符串:

duration = "2.days" 
p = duration.split('.') 
[ p[0].to_i * 3, p[1] ].join('.') 
# => "6.days" 
+0

其實我有:{:run_at => 2.days.from_now)}並且想要乘以2與3得到{:run_at => 6 .days.from_now)} –

+0

'(2.days * 3).from_now'和'(2 * 3).days.from_now'都會產生正確的答案。如果你只有一次,那麼'Time.now +(future_time - time.now)* 3'應該是未來的三倍。 – tadman

+0

有schedule_date(用戶選擇的任何日期),並希望添加如下時間:2.days等與schedule_date。 {:run_at => schedule_date +持續時間)}。它工作正常,但想要乘以一個整數(3或任何)與持續時間。 –

0
duration = "2.days" 
duration[0] = (duration[0].to_i * 3).to_s 
p duration # => "6.days" 
1

當你要開始一個字符串,並導致一個字符串,那麼正則表達式通常是最好的方法。如果你想乘串像「5.months 2.days 3.minutes」

"2.days".sub(/\d+/){|s| s.to_i*3} 
2

下面的代碼是有用

"5.months 2.days 3.minutes".gsub(/\d+/){|s| s.to_i*3} 
=> "15.months 6.days 9.minutes"