我知道这个方法可以获得特定日期的季度开始和结束:
@date.beginning_of_quarter
@date.end_of_quarter
但是我怎样才能得到例如开头的结局。 2012年第4季度?无需将2012年第4季度中期的日期传递给end_of_quarter
?感谢
答案 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