红宝石确定季节(秋季,冬季,春季或夏季)

den*_*icz 2 ruby datetime

我正在编写一个脚本,该脚本应根据日期范围确定年度的"季节":

例如:

January 1 - April 1: Winter
April 2 - June 30: Spring
July 1 - September 31: Summer
October 1 - December 31: Fall
Run Code Online (Sandbox Code Playgroud)

我不确定如何做到这一点的最佳方式(或最好的红宝石方式).其他人遇到如何做到这一点?

Nei*_*ter 6

9月31日?

正如leifg建议的那样,这里是代码:

require 'Date'

class Date

  def season
    # Not sure if there's a neater expression. yday is out due to leap years
    day_hash = month * 100 + mday
    case day_hash
      when 101..401 then :winter
      when 402..630 then :spring
      when 701..930 then :summer
      when 1001..1231 then :fall
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

一旦定义,就像这样调用它:

d = Date.today
d.season
Run Code Online (Sandbox Code Playgroud)