Rails:是否有距离获取最接近今天的Date对象?

Cha*_*ory 12 ruby-on-rails date

鉴于约会,我如何在Rails中找到最近的星期一?

我知道我可以这样做:

Date.tomorrow Date.today

有没有像Date.nearest:星期一?

sgr*_*usa 20

商业 Date对象的方法可以让你做到这一点.这个例子将在下周一给你.

Date.commercial(Date.today.year, 1+Date.today.cweek, 1)
Run Code Online (Sandbox Code Playgroud)

如果您需要下一个或上一个星期一,以最接近的为准,您可以:

Date.commercial(Date.today.year, Date.today.cwday.modulo(4)+Date.today.cweek, 1)
Run Code Online (Sandbox Code Playgroud)

我现在无法执行此操作,因此如果存在语法错误,请原谅我.


Ale*_*ein 10

这有点棘手,但计算起来并不那么难.

使用ActiveSupport::DateAndTimeCalculations#end_of_week计算周结束,这个方法接受一个start_day用来指示一周(这是开始一天的参数:monday默认情况下).他们甚至实施了sunday方法.

诀窍如下:如果你想计算最接近的星期一,你可以把它计算为星期二开始的星期结束(星期二=>第1天,星期三=>第2天,......,星期一=>第7天这也是一周的结束).

所以你需要做的就是:

# it will return current date if today is Monday and nearest Monday otherwise
Date.today.end_of_week(:tuesday) 
Run Code Online (Sandbox Code Playgroud)


Bri*_*ing 5

假设你想要两个方向: Date.today.beginning_of_week + 7*(Date.today.wday/5)


Mit*_*ere 5

我知道这是一个旧线程,但是将其保持最新以供将来的求助者总是很好。

假设今天是8月19日星期五。我要弄到最近的星期一的事情是这样的:

monday = Date.today.monday
Run Code Online (Sandbox Code Playgroud)

然后从那里可以像这样返回一周或向前一周:

last_monday = monday.last_week
next_monday = monday.next_week
Run Code Online (Sandbox Code Playgroud)