0
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
4

2 回答 2

7

首先,请注意您使用的是 ActiveSupport,因此这不是纯 Ruby。假设在 ActiveSupport 中捆绑了一种更简单的方法:

Time.now.next_week(:tuesday)
于 2013-06-26T02:48:58.173 回答
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 

或者介于两者之间的东西。

于 2013-06-26T05:07:54.117 回答