Как узнать дату начала и окончания квартала? - PullRequest
0 голосов
/ 02 июля 2018

Я строю рельсы 5 приложение. Мне нужно иметь возможность получить даты текущего квартала. Под этим я подразумеваю, что пользователь предоставит мне выбранный квартал (от 1 до 4), и я преобразую это число в дату начала и окончания этого выбранного квартала. Как я могу это сделать?

Вот так я и пробовал, но это хорошо?

def quarter_date(quarter, year)
    if quarter == 1
      where(date_at: Time.parse("01-01-#{year}")..Time.parse("01-03-#{year}"))
    elsif quarter == 2
      where(date_at: Time.parse("01-04-#{year}")..Time.parse("01-06-#{year}"))
    elsif quarter == 3
      where(date_at: Time.parse("01-07-#{year}")..Time.parse("01-09-#{year}"))
    elsif quarter == 4
      where(date_at: Time.parse("01-10-#{year}")..Time.parse("01-12-#{year}"))
    end
  end

1 Ответ

0 голосов
/ 02 июля 2018

Ты имеешь в виду что-то подобное?

require 'date'

today = Date.today
 => #<Date: 2018-07-02 ((2458302j,0s,0n),+0s,2299161j)>

year = today.year
 => 2018

input = 3

start_date = Date.new(2018, input * 3 - 2, 1)
 => #<Date: 2018-07-01 ((2458301j,0s,0n),+0s,2299161j)>

end_date = Date.new(2018, input * 3 + 1, 1) - 1
 => #<Date: 2018-09-30 ((2458392j,0s,0n),+0s,2299161j)>

Возвращает даты начала и окончания для данного квартала текущего года.

Обновление

Обновлено методом с вашей попытки:

def quarter_date_range(quarter, year)
  start_date = Time.parse("#{year}-#{quarter * 3 - 2}-1")
  end_date = (start_date + 2.months).end_of_month
  where(date_at: start_date..end_date)
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...