Ruby 获取两时间差和生活中认为的不一致

lb563 · 2015年11月05日 · 最后由 chaucerling 回复于 2015年11月05日 · 2205 次阅读

使用time_difference gem 包来比较两个时间差,在处理两个时间相差多少个月时这样表达

TimeDifference.between(Time.parse('2015-8-31'), Time.parse("2015-6-30")).in_general

输出:

{:years=>0, :months=>2, :weeks=>0, :days=>2, :hours=>0, :minutes=>0, :seconds=>0}

对的。你发现了.相差 2个月2天

回来日常生活中。我们认为 2015-6-302015-8-31 相差2个月 没有 x天

进到源代码中。发现其在算多少个月时 :

def in_months
    (@time_diff / (1.day * 30.42)).round(2)
  end

一个月默认按30.42天来计算。

怎么能获取到我们日常生活中认为的时间差呢?

这个 gem 挺好用的,但不太清楚你说的日常生活中的时间是指?

#1 楼 @easonlovewan 就是说我按一般的认知。像 6.30 到 8.31 号,如果把日历拿出来计算刚好是两个月。但是用程序的方法来计算就是 2 个月多 2 天。

DateTime.parse("2014-8-31")-DateTime.parse("2014-6-30")  #(62/1)

然后可以除一下这两个月之间天数的差,余数就是多出的 xx 天

需要 登录 后方可回复, 如果你还没有账号请 注册新账号