给定日期和星期几,找到将来最接近的日期

时间:2016-04-10 18:49:27

标签: ruby-on-rails ruby

考虑到星期几(让我们说星期一),我需要找到最近的日期(将来)到给定日期(例如9-4-2016),这是一周中的这一天(对于这些例子,它应该是11-4-2016)。

2 个答案:

答案 0 :(得分:4)

这是一个纯Ruby解决方案。

require 'date'

d = Date.strptime('9-4-2016', '%d-%m-%Y')
  #=> #<Date: 2016-04-09 ((2457488j,0s,0n),+0s,2299161j)> 
d + (1 - d.wday) % 7
  #=> #<Date: 2016-04-11 ((2457490j,0s,0n),+0s,2299161j)> 

1是星期一的偏移量。 d.wday #=> 6

我假设如果日期是星期一,则“最接近的”星期一是同一天。如果是下周一,请使用:

d + (d.wday == 1) ? 7 : (1 - d.wday) % 7

答案 1 :(得分:3)

您可以在date的最近一周找到此日期:

date =  Date.parse('9-4-2016')
(date..date + 6).find {|d| d.strftime("%A") == "Monday"}
#=> Mon, 11 Apr 2016