Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class DateCalculator
- attr_accessor :days, :year
- def initialize(origin_year)
- @origin_year = origin_year
- end
- def current_year_from_days(days_since_origin)
- @current_year = @origin_year
- @days_since_origin = days_since_origin
- while (@days_since_origin > 365) do
- if leap_year?(year)
- advance_by_leap_year
- else
- advance_by_regular_year
- end
- end
- @current_year
- end
- def advance_by_leap_year
- if @days_since_origin >= 366
- @days_since_origin -= 366
- @current_year += 1
- end
- end
- def advance_by_regular_year
- @days_since_origin -= 365
- @current_year += 1
- end
- def leap_year?(year)
- every_400_years?(year) || every_4_years_except_centuries?(year)
- end
- def every_400_years?(year)
- year % 400 == 0
- end
- def every_4_years_except_centuries?(year)
- (year % 4 == 0 && year % 100 != 0)
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement