在Ruby中找到“下周二”

时间:2013-06-26 02:39:44

标签: ruby-on-rails ruby date

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

2 个答案:

答案 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 

两者之间的某种东西。