获得红宝石四分之一的年份

时间:2013-12-18 17:58:53

标签: ruby-on-rails ruby

我知道这个方法可以获得特定日期的季度开始和结束:

@date.beginning_of_quarter
@date.end_of_quarter

但是我怎样才能得到例如开头的结局。 2012年第4季度?无需将2012年第4季度中期的日期传递给end_of_quarter?感谢

2 个答案:

答案 0 :(得分:5)

您可以使用Date.new(从最后开始计算负数):

require 'date'

# 1st quarter
Date.new(2012, 1)      #=> #<Date: 2012-01-01 ...>
Date.new(2012, 3, -1)  #=> #<Date: 2012-03-31 ...>

# 2nd quarter
Date.new(2012, 4)      #=> #<Date: 2012-04-01 ...>
Date.new(2012, 6, -1)  #=> #<Date: 2012-06-30 ...>

# 3rd quarter
Date.new(2012, 7)      #=> #<Date: 2012-07-01 ...>
Date.new(2012, 9, -1)  #=> #<Date: 2012-09-30 ...>

# 4th quarter
Date.new(2012, 10)     #=> #<Date: 2012-10-01 ...>
Date.new(2012, 12, -1) #=> #<Date: 2012-12-31 ...>

或作为方法:

require 'date'

def beginning_of_quarter(year, quarter)
  Date.new(year, quarter * 3 - 2)
end

def end_of_quarter(year, quarter)
  Date.new(year, quarter * 3, -1)
end

beginning_of_quarter(2012, 4) #=> #<Date: 2012-10-01 ...>
end_of_quarter(2012, 4)       #=> #<Date: 2012-12-31 ...>

答案 1 :(得分:4)

你可以这样做:

Date.new(Date.today.year,12,1).beginning_of_quarter
Date.new(Date.today.year,12,1).end_of_quarter

Date.today.year用于确保它调用当前年度的最后一个季度。

由于您需要在2012年最后一个季度使用它,您可以这样做:

Date.new(2012.year,12,1).beginning_of_quarter
Date.new(2012.year,12,1).end_of_quarter