在我的应用程序中,我有各种日期序列,例如每周、每月和每年。给定过去的任意日期,我需要计算序列中的下一个 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 引入了 calculation提供有用的 #advance
方法的模块。
date = Date.today
date.advance(:weeks => 1)
date.advance(:days => 7)
# => next week
关于ruby-on-rails - 给定一个日期,我如何才能有效地计算给定序列中的下一个日期(每周、每月、每年)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2317584/