Advertisement
saasbook

date_calculator_final.rb

Mar 1st, 2014
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 0.88 KB | None | 0 0
  1. class DateCalculator
  2.   attr_accessor :days, :year
  3.   def initialize(origin_year)
  4.     @origin_year = origin_year
  5.   end
  6.  
  7.   def current_year_from_days(days_since_origin)
  8.     @current_year = @origin_year
  9.     @days_since_origin = days_since_origin
  10.     while (@days_since_origin > 365) do
  11.       if leap_year?(year)
  12.         advance_by_leap_year
  13.       else
  14.         advance_by_regular_year
  15.       end
  16.     end
  17.     @current_year
  18.   end
  19.  
  20.   def advance_by_leap_year
  21.     if @days_since_origin >= 366
  22.       @days_since_origin -= 366
  23.       @current_year += 1
  24.     end
  25.   end
  26.  
  27.   def advance_by_regular_year
  28.     @days_since_origin -= 365
  29.     @current_year += 1
  30.   end
  31.  
  32.   def leap_year?(year)
  33.     every_400_years?(year)  ||  every_4_years_except_centuries?(year)
  34.   end
  35.  
  36.   def every_400_years?(year)
  37.     year % 400 == 0
  38.   end
  39.  
  40.   def every_4_years_except_centuries?(year)
  41.     (year % 4 == 0  &&  year % 100 != 0)
  42.   end
  43.  
  44. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement