Calculating the number of weeks in a year with Ruby

后端 未结 3 1700
抹茶落季
抹茶落季 2020-12-03 18:31

Is there a way in Ruby to calculate the number of weeks(ISO 8601) for a given year? I\'m currently using a lookup table and I\'d like to stop using it.

相关标签:
3条回答
  • 2020-12-03 19:06
    def num_weeks(year = Date.today.year)
      Date.new(year, 12, 28).cweek # magick date!
    end
    
    long_iso_years = (2000..2400).select{|year| num_weeks(year) == 53} 
    

    Yields the same list as wikipedia

    0 讨论(0)
  • 2020-12-03 19:11

    You can do the following:

    require 'date'
    @year = 2001 #year you want to count the number of weeks
    d = Date.new @year, 12, 30 # as in Date.new 
    d.cweek # returns the commercial week number for the last week of the year, in this case, 52
    

    if that's what you're looking for :)

    PS: that only works for commercial year though, so in 2001, the 31th of December was actually commercial week 1

    0 讨论(0)
  • 2020-12-03 19:15
    require 'date'
    def num_weeks(year = Date.today.year)
      # all years starting with Thursday, and leap years starting with Wednesday have 53 weeks
      # http://en.wikipedia.org/wiki/ISO_week_date#Last_week
      d = Date.new(year, 1, 1)
      return 53 if d.wday == 4
      return 53 if d.leap? and d.wday == 3
      52
    end
    
    0 讨论(0)
提交回复
热议问题