2010-06-21 88 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