require 'active_support/all'
days = 0.day.ago
days += 1 until days.since.wday == 2
next_tuesday = days.since
上面的代码做得不对。但是下面是正确的。你能告诉我为什么吗?
require 'active_support/all'
current_day = 0.day.ago
current_day += 1.day until current_day.wday == 2
next_tuesday = current_day
答案 0 :(得分:7)
首先,请注意您使用的是ActiveSupport,因此这不是纯Ruby。假设在ActiveSupport中捆绑了一种更简单的方法:
Time.now.next_week(:tuesday)
答案 1 :(得分:0)
使用秒作为间隔可能会进行日期数学,但那是旧学校,我相信你不想让我们老人用故事吓唬你。
我离开了我的电脑所以这是未经测试的,但这是你想要做的事情的要点:
today = Date.today
today -= today.wday # normalize the day to the first day of the week, AKA Sunday
today += 9 # add a week + 2 days.
可以在一行中说明:
Date.today - Date.today.wkday + 9
两者之间的某种东西。