2010-04-14 35 views
0

是的,我已經閱讀並做格蘭谷歌很多次,但我仍然不能得到這個工作...也許我是個白癡:)幫助使用Ruby日期比較

我有使用門票系統。開始日期是時間戳中的「created_at」。每張票在「created_at」後7天關閉。在模型中,我使用的是:

def closes 
    (self.created_at + 7.days) 
end 

我試圖創建將採取「關閉」按鈕,返回它有多少天,小時,分鐘和秒票關閉之前留下的另一種方法。任何人都想幫助和/或告誡我的技能? ;)

編輯:

理想情況下,我想最終輸出到像「6d14h22s」或類似的東西。

回答

1

我不知道有什麼好辦法任意格式的持續時間與軌,但你可以自己做這樣的:

def closes_in 
    minutes = (Time.now - closes).to_i/60 
    days = minutes/(24*60) 
    minutes -= days * 24*60 
    hours = minutes/60 
    minutes -= hours * 60 
    "#{days}d#{hours}h#{minutes}m" 
end 
+0

太棒了。我感謝mckeed的幫助:) – Kevin 2010-04-14 22:52:29

2

使用distance_of_time_in_words helper方法:

class Ticket < ActiveRecord::Base 
    include ActionView::Helpers::DateHelper 

    def closes_in_words 
    distance_of_time_in_words(Time.now, self.closes) 
    end 
end 
+0

謝謝很多,這很長。它缺少的一件事是它只使用了一個「剩餘6天」的指標,我需要像「6d12h14m」這樣的指標。儘管我非常感謝你的幫助! – Kevin 2010-04-14 21:05:00

+0

你必須編寫自定義代碼來做你需要的。我喜歡Rails的方式。在我看來,在截止日期的一天內,小時/分鐘/秒的粒度變得相關。 – 2010-04-14 22:14:02

+0

我同意,但我可以看到一些用途更具體。感謝您的幫助Kandada – Kevin 2010-04-14 22:52:14