2016-03-15 64 views
2

所以我想項目顯示爲Items剩餘7天后該項目將被刪除。我試過顯示剩餘時間與distance_of_time_in_words

<%= distance_of_time_in_words(item.created_at, item.created_at + 7.days) %> 

但我得到的是所有項目上的「7天」。任何人都可以簡單地說明這種幫助方法是如何工

+1

所以,你需要的是從目前的時間差。所以你應該這樣做:'distance_of_time_in_words(Time.now,item.created_at + 7.days)'。如果您嘗試使用「2 - (2 + 7)」,它將始終返回「-7」並且永遠不會改變。 – Deep

+0

感謝小比喻幫助加載非常感謝你! –

回答

5

the documentation讓長相看什麼distance_of_time_in_words做:

distance_of_time_in_words(FROM_TIME,TO_TIME = 0,選擇= {})
報告之間的兩地時間,日期或日期時間在時間​​的大致距離對象或整數作爲秒。

因此它報告第一個參數和第二個參數的時間差。現在,你正在做的:

distance_of_time_in_words(item.created_at, item.created_at + 7.days) 

item.created_atitem.created_at加七天之間的差異是永遠......7天;-)

我認爲這是一件永遠七點後刪除天?在這種情況下,你想什麼,是當前的日期和創建日期加上7天,你可以得到的區別:

distance_of_time_in_words(Time.now, item.created_at + 7.days) 
+0

是的,這就是我想要得到的,謝謝。處理日期對我來說有點難,所以這種方法讓我的頭髮變得混亂起來。謝謝你的解釋:) –

+0

@MiguelAngelQuintana是的,日期可以是尷尬的。但他們只是數字。許多計算機將日期存儲爲自1970年1月1日以來的秒數(目前爲1458023724),並且當您說'+ 7.days'時,您實際上只是做了一個簡單的加法:'1458023724 + 86400 * 7'一天有86400秒,這是一個有用的數字來記憶),僅此而已。顯示爲「Tue Mar 15 07:36:24 CET 2016」或「5天6小時」對於我們貧窮的人來說只是一種格式化的東西,就像'125秒'顯示爲'2:05'或'53.31 '作爲'53,31' ... – Carpetsmoker