    # File lib/active_support/core_ext/time/calculations.rb, line 102
            def advance(options)
              unless options[:weeks].nil?
                options[:weeks], partial_weeks = options[:weeks].divmod(1)
                options[:days] = (options[:days] || 0) + 7 * partial_weeks
              end

              unless options[:days].nil?
                options[:days], partial_days = options[:days].divmod(1)
                options[:hours] = (options[:hours] || 0) + 24 * partial_days
              end

              d = to_date.advance(options)
              time_advanced_by_date = change(:year => d.year, :month => d.month, :day => d.day)
              seconds_to_advance = (options[:seconds] || 0) + (options[:minutes] || 0) * 60 + (options[:hours] || 0) * 3600
              seconds_to_advance == 0 ? time_advanced_by_date : time_advanced_by_date.since(seconds_to_advance)
            end