Рубиновый метод для получения месяцев кварталов, к которым принадлежит данная дата - PullRequest
8 голосов
/ 07 декабря 2011

У меня есть свидание, и я хочу узнать месяцы этого конкретного квартала. Как я могу сделать это в рубине как можно проще? Я имею в виду, что в качестве даты, которую я даю, будет 27-04-2011, то в результате я получу апрель, май, июнь в виде строки или int, например 4,5,6 для апреля-июня.

Ответы [ 5 ]

16 голосов
/ 26 сентября 2013

Вы можете получить квартал с любой даты, выполнив следующее:

quarter = ((Time.now.month - 1) / 3) + 1
3 голосов
/ 16 мая 2013

Вы можете сделать следующее:

m = date.beginning_of_quarter.month
"#{m},#{m+1},#{m+2}"

как в

>> date=Date.parse "27-02-2011"
=> Sun, 27 Feb 2011  
>> m = date.beginning_of_quarter.month
=> 1
>> "#{m},#{m+1},#{m+2}"
=> "1,2,3"
3 голосов
/ 07 декабря 2011

Вы можете определить функцию для этого, чтобы принимать date в качестве аргумента и возвращать четверть

def current_quarter_months(date)
  quarters = [[1,2,3], [4,5,6], [7,8,9], [10,11,12]]
  quarters[(date.month - 1) / 3]
end

Функция будет возвращать массив на основе значения квартала, к которому относится дата.

2 голосов
/ 30 марта 2015

Для тех, кто пришел сюда в поиске "ruby date квартала". Вы можете легко расширить класс Дата на четверти:

class Date
  def quarter
    case self.month
    when 1,2,3
      return 1
    when 4,5,6
      return 2
    when 7,8,9
      return 3
    when 10,11,12
      return 4
    end
  end
end

Пример использования:

Date.parse("1 jan").quarter # -> 1
Date.parse("1 apr").quarter # -> 2
Date.parse("1 jul").quarter # -> 3
Date.parse("1 oct").quarter # -> 4
Date.parse("31 dec").quarter # -> 4
1 голос
/ 16 февраля 2016

Если вы сформулируете свой вопрос, вы можете просто использовать # month

", тогда я должен получить следующий результат: апрель, май, июнь в виде строки или int, как 4,5,6 для апреля-июня."

Апрель - это месяц 4, поэтому

d = Date.parse('2014-04-01')
 => Tue, 01 Apr 2014
d.month
=> 4

Если вы действительно хотите квартал, вы можете открыть класс дат и добавить свой собственный метод квартала

class Date
  def quarter
    (month / 3.0).ceil
  end
end

Пример использования

d = Date.parse('2014-04-01')
  => Tue, 01 Apr 2014
d.quarter
  => 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...