2010-06-21 118 views
14

我必須讓兩個日期之間的簡單區別:如何評估年,月和日的日期差異(紅寶石)?

Date.parse("2009-06-20") - Date.today 

這使我有日期的天數的差異。

任何人都知道一個方法可以輕鬆地將其轉換成以下格式:

The event occurred X years, Y months and Z days ago 

謝謝。

+0

錯字? Y個月? – ghoppe 2010-06-21 22:47:36

+0

[更精確distance_of_time_in_words]的可能重複(http://stackoverflow.com/questions/1224613/more-precise-distance-of-time-in-words) – 2010-06-22 01:17:25

回答

5

你可能會尋找distance_of_times_in_words

+1

很好的答案,但這是Ruby-on-Rails特定的。海報必須在純ruby程序中提取該代碼。 (他沒有提到Rails,所以我認爲這是一個非Rails的具體問題。) – ghoppe 2010-06-21 22:39:22

+0

我的不好,我正在使用ruby-on-rails – robertokl 2010-06-21 22:59:42

+0

這很好,但我需要更精確的東西。你知道其他方式嗎? – robertokl 2010-06-21 23:14:12

0

我不知道任何標準,正確的方式做到這一點的。看起來很奇怪,標準的Ruby庫有一個Date類但沒有DateSpan功能。 Rails有一個解決方案,但是對於我來說,要求這整個龐然大物完成這樣一項微不足道的任務讓我覺得有些痛苦。

1

這是天,小時,秒差異的例子。添加您需要的字段。

def calculate_difference 
    minutes = (Date.parse("2009-06-20") - Date.today).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

不那麼漂亮=/ – 2010-06-21 23:35:41

+0

是的..我想計算的月份和年份太.. – robertokl 2010-06-21 23:54:21

+1

問題開始與飛蛾完全一樣,因爲有28,30和31天的月.. – robertokl 2010-06-22 00:09:24

3

有一個RubyGem返回在{哈希時差:年= > 0,:月=> 0,...}

鏈接是:https://rubygems.org/gems/time_diff

+1

你的寶石看起來不錯,但我認爲你應該開始研究它。你應該添加一些文本和格式。保持良好的工作。 – robertokl 2011-04-01 19:26:50

+0

謝謝。當然,我會改善我的寶石。 – abhidsm 2011-04-03 14:28:26