我知道这种方法可以得到特定日期的季度开始和结束时间:
@date.beginning_of_quarter
@date.end_of_quarter
但是我怎么才能得到2012年第四季度的开始和结束呢而不必将2012年第四季度中期的日期传递给
end_of_quarter
谢谢 最佳答案
您可以使用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 ...>