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

u2nhd7ah  于 11个月前  发布在  Ruby
关注(0)|答案(6)|浏览(131)

我有一个日期,我想知道那个特定季度的月份。我如何用最简单的方法在ruby中完成这个任务?我的意思是,如果我给予的日期是27-04-2011,那么我必须得到的结果是四月,五月,六月作为字符串或int像4,5,6四月到六月。

tsm1rwdh

tsm1rwdh1#

您可以通过执行以下操作从任何日期获取25美分硬币:

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

字符串
或者更短:

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

juzqafwq

juzqafwq2#

您可以执行以下操作:

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"

qhhrdooz

qhhrdooz3#

您可以为此定义一个函数,以接受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

字符串
该函数将根据日期所属的季度值返回数组。

9wbgstp7

9wbgstp74#

对于那些通过搜索“ruby date quarter”来到这里的人。你可以很容易地用quarter扩展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

qmb5sa22

qmb5sa225#

您的问题的措辞方式可以只使用#月
“那么我必须得到的结果是四月,五月,六月作为字符串或int像4,5,6为四月到六月。”
四月是第四个月,

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

字符串
如果你真的想要这个季度,你可以打开date类并添加你自己的季度方法

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


示例使用

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

p8h8hvxi

p8h8hvxi6#

日期#季度(Rails 7.1+)

Rails 7.1开始,有一个季度方法。

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

来源:

  • Rails API文档
  • GitHub PR的一个。
  • 源头
    备注:
  • Time示例也支持quarter方法。

相关问题