Ruby 方法获取给定日期所属季度的月份

问题描述 投票:0回答:6

我有一个日期,我想找出该特定季度的月份。我如何以最简单的方式在 ruby 中完成此操作?我的意思是,如果我给出的日期是

27-04-2011
,那么我必须得到的结果是四月,五月,六月作为字符串或整数,例如四月到六月的4,5,6。

ruby-on-rails ruby ruby-on-rails-3 rubygems
6个回答
30
投票

您可以通过执行以下操作获取任何日期的季度:

quarter = (((Date.today.month - 1) / 3) + 1).to_i

或更短:

quarter = (Date.today.month / 3.0).ceil

6
投票

您可以执行以下操作:

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"

5
投票

您可以定义一个函数来接受

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
投票

对于那些通过搜索“ruby datequarter”来到这里的人。 您可以轻松地用季度扩展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

2
投票

您的问题的措辞方式您可以使用#month

“那么我必须得到的结果是四月,五月,六月作为字符串或整数,例如四月到六月的4,5,6。”

四月是第四个月

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

0
投票

日期#季度(Rails 7.1+)

Rails 7.1开始,有一个quarter方法。

Date.new(2010, 1, 31).quarter  # => 1
Date.new(2010, 4, 12).quarter  # => 2
Date.new(2010, 9, 15).quarter  # => 3
Date.new(2010, 12, 25).quarter # => 4

现在,获取季度就这么简单:

Date.parse("27-04-2011").quarter
# => 2

来源:

备注:

© www.soinside.com 2019 - 2024. All rights reserved.