首页 > 解决方案 > 如何计算账单年度的 4 周期间

问题描述

我正在重构一个应该返回 4 周周期的方法。周期计算为当前计费年度中每 4 周一次的块数。每个帐单年度有 13 个期间。第一个计费年度开始于 2008 年 8 月 24 日。

我创建了一个公式:

def period
  period = (((self.utc.to_time - Time.new(2008,8,23,0,0,0,0)) / 60 / 60 / 24 / 7 / 52).modulo(1) * 13).ceil
  period == 0 ? 13 : period
end

多年来,它变得不准确,我们现在看到整个时期的转变:时期 1 的预订显示为时期 2。我尝试重新计算公式,但没有成功。反正我觉得公式太复杂了,大概可以更简单的实现。

标签: ruby

解决方案


我只会使用Date而不是,Time计算会容易得多。

DAYS_PER_PERIOD = 28

def period
  days = Date.today - Date.new(2008, 8, 23)
  periods = days / DAYS_PER_PERIOD
  periods.to_i # would return a `Rational` instead of an `Integer` otherwise
end

推荐阅读