Получить диапазон дат от одной даты - PullRequest
3 голосов
/ 25 января 2010

Конечно, я могу сделать это сам, но есть ли в Ruby встроенная функция или библиотека, которая позволила бы мне сделать что-то подобное

date = Time.now
sunday = date.week.first_day
saturday = date.week.last_day

Спасибо

Ответы [ 2 ]

6 голосов
/ 25 января 2010

Используйте драгоценный камень 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]
0 голосов
/ 25 января 2010

Дни представлены 0..6, воскресенье - 0.

date = Time.now
puts date.wday 

будет выводить сегодняшний номер кода недели.

Чего вы пытаетесь достичь?

добавляя или вычитая количество секунд в дне, вы получаете другую дату ровно через 1 день.

date = Time.now
puts date + 86400 #will be tomorrow
...