给定一个日期,如何有效地计算给定序列(每周、每月、每年)中的下一个日期?

2024-03-31

在我的应用程序中,我有多种日期序列,例如每周、每月和每年。给定过去的任意日期,我需要计算下一个日期future序列中的日期。

目前我正在使用次优循环。这是一个简化的示例(在 Ruby/Rails 中):

def calculate_next_date(from_date)
  next_date = from_date
  while next_date < Date.today
    next_date += 1.week # (or 1.month)
  end
  next_date
end

我不想执行循环(虽然简单,但效率低下,尤其是在给出遥远的过去的日期时),我想通过计算两个日期之间的周数(或月数,年数)来使用日期算术来执行此操作,计算余数并使用这些值生成下一个日期。

这是正确的方法,还是我缺少一种特别聪明的“Ruby”方法来解决这个问题?或者我应该为了简单起见而坚持我的循环?


因为您将此问题标记为ruby-on-rails,我猜你正在使用 Rails。 ActiveSupport 推出计算 http://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/date_time/calculations.rb模块提供了一个有用的#advance method.

date = Date.today
date.advance(:weeks => 1)
date.advance(:days => 7)
# => next week
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

给定一个日期,如何有效地计算给定序列(每周、每月、每年)中的下一个日期? 的相关文章

随机推荐