我有一个日期,我想找出该特定季度的月份。我如何以最简单的方式在 ruby 中完成此操作?我的意思是,如果我给出的日期是
27-04-2011
,那么我必须得到的结果是四月,五月,六月作为字符串或整数,例如四月到六月的4,5,6。
您可以通过执行以下操作获取任何日期的季度:
quarter = (((Date.today.month - 1) / 3) + 1).to_i
或更短:
quarter = (Date.today.month / 3.0).ceil
您可以执行以下操作:
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"
您可以定义一个函数来接受
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
该函数将根据日期所属季度的值返回数组。
对于那些通过搜索“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
您的问题的措辞方式您可以使用#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
从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
来源:
备注: