我必须在两个日期之间做一个简单的区别:
Date.parse("2009-06-20") - Date.today
这给了我日期的差异。
任何人都知道如何轻松将其转换为以下格式:
The event occurred X years, Y months and Z days ago
谢谢。
答案 0 :(得分:6)
答案 1 :(得分:5)
您可能正在寻找distance_of_times_in_words
答案 2 :(得分:3)
有一个RubyGem,它返回像{:year =>这样的哈希值的时差。 0,:month => 0,...}
答案 3 :(得分: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
答案 4 :(得分:0)
我不知道有任何标准的,正确的方法。看起来很奇怪,标准的Ruby库有一个Date类但没有DateSpan功能。 Rails有一个解决方案,但是对于我来说,要求这整个庞然大物完成这样一项微不足道的任务感觉有点痛苦。
答案 5 :(得分:0)
我发现这些通用日期差异在很多情况下都很有用:
time_a = Time.zone.parse('2020-05-30')
time_b = Time.zone.parse('2010-01-18')
time_diff = {
years: time_a.year - time_b.year,
months: time_a.month - time_b.month,
days: time_a.day - time_b.day,
}
=> {:years=>10, :months=>4, :days=>12}