2016-08-11 77 views
0

快速的問題。我正在使用distance_of_time_in_words幫助器來檢查一個對象創建的天數。這工作正常,但我不希望它必須去24小時纔算天,但希望它數到「1」天,一旦它是「00:00」Rails DateTime幫手邏輯

eg distance_of_time_in_words(「2016-08-11 11 :00「,」2016-08-12 00:00「)應該是1天,但是13小時

我希望一旦它通過」00:00「它應該算作1天?

+0

請記住,您建議的邏輯強烈依賴於觀察者所在的時區。如果您從服務器提供此值,則很可能您的訪問者不在同一個時區。 (考慮到......是否需要滿足這個任意要求的自定義邏輯和努力真的值得嗎?) –

+0

非常真實的會記住這一點...但是現在只能使用我的時區。感謝您指出這一點 –

回答

2

您可以使用

time_ago_in_words(date_item_was_created.at_midnight) 

time_ago_in_words讓你放棄加入「現在」時間*,並通過移動創建的,在可追溯至午夜,你會經過一個在接下來的午夜,標記爲 。根據API doc,它應該給你一整天的任何時間,這聽起來就像你在做什麼。

*如果您未比較當前時間,則可以繼續使用distance_of_time_in_words。

+0

哦智能智能所有我真正需要的是at_midnight –

0

這就是你的意思,我猜。

def distance_of_time_in_words(time1,time2) 

    d1 = Time.parse(time1.to_s).to_date.strftime("%d").to_i 
    d2 = Time.parse(time2.to_s).to_date.strftime("%d").to_i 
    seconds = Time.parse(time2.to_s)- Time.parse(time1.to_s) 
    hours = seconds/3600 

    if d2-d1 >= 1 
    return "#{(d2-d1).to_s} days" 
    else 
    return "#{hours.to_s} hours" 
    end 

end