Используйте драгоценный камень ActiveSupport . Однако понедельник считается началом недели.
require 'active_support'
d = Date.today # => Mon, 25 Jan 2010
sun = d.beginning_of_week - 1.day # => Sun, 24 Jan 2010
sat = d.end_of_week - 1.day # => Sat, 30 Jan 2010
Нужно больше работать, если сегодня воскресенье
def week_ends(date)
sun = date.beginning_of_week - 1.day
sat = date.end_of_week - 1.day
if date.sunday?
sun += 1.week
sat += 1.week
end
[sun, sat]
end
p d = Date.today
p week_ends(d)
p d = Date.yesterday
p week_ends(d)
Результаты в
Mon, 25 Jan 2010
[Sun, 24 Jan 2010, Sat, 30 Jan 2010]
Sun, 24 Jan 2010
[Sun, 24 Jan 2010, Sat, 30 Jan 2010]