我知道这种方法可以得到特定日期的季度开始和结束时间:

@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 ...>

10-07 12:24
查看更多