bre*_*ish 11 ruby ruby-on-rails date ruby-on-rails-3
如何计算两个月的差异?此外,它有所作为,我正在使用Date对象,而不是DateTime.此外,一些舍入选项可能会很好,所以我可以控制是否要在部分月份上舍入或下舍入.
谢谢!
tad*_*man 10
从另一个日期或日期时间中减去一个日期或日期时间将产生作为分数的天数,但这可以作为一个Float或Fixnum根据需要进行评估.
例如:
(Date.today - Date.today.advance(:months => -3)).to_f
# => 89.0
Run Code Online (Sandbox Code Playgroud)
从今天到三个月前的同一日历日期之间有89.0天.如果你使用平均30天或30.4375这样的工作,你最终会在当时和现在之间经过2.92个月,或者向上舍入到最接近的整数3.
如果要计算精确的日历月数,那就更难了,但可以完成.
这应该给出一个很好的近似值:
Date1 - Date2 = difference_in_days
(difference_in_days/30).round = difference_in_months
Run Code Online (Sandbox Code Playgroud)
像这样的东西比计算秒数更具可读性,并且会给你实际的日历差异:
# Calculate differnce between two dates in months
# Produces b - a
def month_difference(a, b)
difference = 0.0
if a.year != b.year
difference += 12 * (b.year - a.year)
end
difference + b.month - a.month
end
Run Code Online (Sandbox Code Playgroud)
如果您还需要根据天数计算差异,您可以按照模式进行操作
我们需要这些方面的东西,但包括部分月份.所以1/31到2/1仍然会产生2个月.可能有帮助!
def self.month_count(range)
12 * (range.end.year - range.begin.year) + range.end.month - range.begin.month
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14937 次 |
| 最近记录: |